51單片機普通IO口模擬串行口之查詢方式
完整程序工程源代碼:點擊下載
主程序:
#include reg51.h>#include "delay.h"#include "sub4094.c"#include intrins.h>sbit spk = P2^5; //定義蜂鳴器使用的I/O口P2.5sbit LED = P2^7;#include "subuart2.c"void main (void){unsigned char first,zjgs,order,zhen_xh,jym,end; //定義起始字、字節(jié)個數(shù)、命令碼、幀序號、校驗碼、結束字unsigned char i; //定義1個隨機變量unsigned char sum; //定義單片機計算用的校驗碼unsigned char LED_contrl; //指示燈控制字unsigned contrl_1,contrl_2; //移位變量//unsigned int delay_counter;P5=0xEF; //使能流水燈,屏蔽數(shù)碼管P4=0x00; //流水燈全部點亮 update4094(); //刷新流水燈狀態(tài)delay_ms(300);P4=0xFF; //流水燈全部熄滅update4094(); //刷新流水燈狀態(tài)while(1){first=getchar2(); //讀取6個數(shù)據(jù)進行處理。 zjgs=getchar2();order=getchar2();zhen_xh=getchar2();jym=getchar2();end=getchar2();if(0xfa != first) goto end;sum=zjgs+order+zhen_xh;if(sum != jym) {putchar2(0xfa); //起始字putchar2(0x07); //字節(jié)個數(shù)sum=0x07;putchar2(order); //接收到的命令碼sum+=order;putchar2(zhen_xh); //接收到的幀序號putchar2(0x00); //命令校驗錯誤標志位sum+=zhen_xh;putchar2(sum); //校驗碼putchar2(0xfb);//蜂鳴器發(fā)出報警聲音,指示燈閃爍for(i=0;i8;i++) {LED=~LED; //取反指示燈spk=~spk; //取反蜂鳴器delay_ms(200); }goto end;} if(0xfb != end) goto end;switch(order){case 1: //將收到的命令返回給串行口LED=0;putchar2(first); //起始字 putchar2(zjgs); //字節(jié)個數(shù) putchar2(order); //命令碼putchar2(zhen_xh); //幀序號putchar2(jym); //校驗碼putchar2(end); //結束字delay_ms(50);LED=1;//流水燈效果 循環(huán)右移P4=0xff; //熄滅所有指示燈update4094();LED_contrl=0x01; //初始化指示燈控制字節(jié)delay_ms(50); //延時300MSfor(i=0;i8;i++){P4=~LED_contrl; //點亮控制字節(jié)相應指示燈update4094();delay_ms(50);LED_contrl=1;}P4=0xff; //熄滅所有指示燈update4094();break;case 2: //將收到的命令返回給串行口putchar2(first); //起始字 putchar2(zjgs); //字節(jié)個數(shù) putchar2(order); //命令碼putchar2(zhen_xh); //幀序號putchar2(jym); //校驗碼putchar2(end); //結束字//流水燈效果 從左到右逐個點亮P4=0xff; //熄滅所有指示燈update4094();LED_contrl=0xff; //初始化指示燈控制字節(jié)delay_ms(50);for(i=0;i8;i++){LED_contrl=1;P4=LED_contrl;update4094();delay_ms(50);}break;case 3: //將收到的命令返回給串行口putchar2(first); //起始字 putchar2(zjgs); //字節(jié)個數(shù) putchar2(order); //命令碼putchar2(zhen_xh); //幀序號putchar2(jym); //校驗碼putchar2(end); //結束字//流水燈效果 循環(huán)對撞P4=0xff; //熄滅所有指示燈update4094();contrl_1=0x02; //初始化移位變量1contrl_2=0x80; //初始化移位變量2delay_ms(50);for(i=0;i8;i++){LED_contrl=contrl_1|contrl_2;P4=~LED_contrl; //點亮控制字節(jié)相應指示燈update4094();delay_ms(50);contrl_1=1; //移位變量1左移1位contrl_2>>=1; //移位變量2右移1位} P4=0xff; //熄滅所有指示燈update4094();break;default:break;}end:;}}
51單片機相關文章:51單片機教程
單片機相關文章:單片機教程
單片機相關文章:單片機視頻教程
單片機相關文章:單片機工作原理
蜂鳴器相關文章:蜂鳴器原理
評論