新闻中心

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 下一页

评论


相关推荐

技术专区

关闭