新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機普通IO口模擬串行口之查詢方式

        51單片機普通IO口模擬串行口之查詢方式

        作者: 時間:2012-08-04 來源:網絡 收藏

        完整程序工程源代碼:點擊下載

        主程序:

        #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;  //定義起始字、字節個數、命令碼、幀序號、校驗碼、結束字unsigned char i;       //定義1個隨機變量unsigned char sum;     //定義單片機計算用的校驗碼unsigned char LED_contrl;  //指示燈控制字unsigned contrl_1,contrl_2; //移位變量//unsigned int delay_counter;P5=0xEF;   //使能流水燈,屏蔽數碼管P4=0x00;      //流水燈全部點亮	update4094(); //刷新流水燈狀態delay_ms(300);P4=0xFF;      //流水燈全部熄滅update4094(); //刷新流水燈狀態while(1){first=getchar2();   //讀取6個數據進行處理。 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);    //字節個數sum=0x07;putchar2(order);   //接收到的命令碼sum+=order;putchar2(zhen_xh); //接收到的幀序號putchar2(0x00);    //命令校驗錯誤標志位sum+=zhen_xh;putchar2(sum);     //校驗碼putchar2(0xfb);//蜂鳴器發出報警聲音,指示燈閃爍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);       //字節個數 putchar2(order);      //命令碼putchar2(zhen_xh);    //幀序號putchar2(jym);        //校驗碼putchar2(end);      //結束字delay_ms(50);LED=1;//流水燈效果 循環右移P4=0xff;                       //熄滅所有指示燈update4094();LED_contrl=0x01;               //初始化指示燈控制字節delay_ms(50);                 //延時300MSfor(i=0;i8;i++){P4=~LED_contrl;            //點亮控制字節相應指示燈update4094();delay_ms(50);LED_contrl=1;}P4=0xff;                       //熄滅所有指示燈update4094();break;case 2: //將收到的命令返回給串行口putchar2(first);      //起始字  putchar2(zjgs);       //字節個數 putchar2(order);      //命令碼putchar2(zhen_xh);    //幀序號putchar2(jym);        //校驗碼putchar2(end);      //結束字//流水燈效果 從左到右逐個點亮P4=0xff;         //熄滅所有指示燈update4094();LED_contrl=0xff;   //初始化指示燈控制字節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);       //字節個數 putchar2(order);      //命令碼putchar2(zhen_xh);    //幀序號putchar2(jym);        //校驗碼putchar2(end);      //結束字//流水燈效果  循環對撞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; //點亮控制字節相應指示燈update4094();delay_ms(50);contrl_1=1;  //移位變量1左移1位contrl_2>>=1;  //移位變量2右移1位} P4=0xff;                       //熄滅所有指示燈update4094();break;default:break;}end:;}}

        51單片機相關文章:51單片機教程


        單片機相關文章:單片機教程


        單片機相關文章:單片機視頻教程


        單片機相關文章:單片機工作原理


        蜂鳴器相關文章:蜂鳴器原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宁夏| 绥棱县| 松桃| 天镇县| 阿拉尔市| 彭山县| 睢宁县| 榆社县| 金门县| 荥经县| 仁布县| 吉木萨尔县| 甘泉县| 边坝县| 子洲县| 五家渠市| 本溪| 富顺县| 永寿县| 蒲江县| 寿光市| 梅河口市| 巩留县| 昌吉市| 诏安县| 道真| 宜章县| 方山县| 滨州市| 克东县| 罗定市| 故城县| 乐安县| 溆浦县| 库车县| 潞城市| 武邑县| 绥芬河市| 蒙城县| 巩义市| 开平市|