听说今天成年人都在过六一儿童节,十八岁的烧友们能在百忙之中来看我们的干货,小编很是感动。那么话不多说干货内容刷起! 电路图运行代码 #include #defineBUFFERLEGTH 10 // voidUART_init; //串口初始化函数 void COM_send(void); //串口发送函数 charstr[20]; char j; // void main(void) { unsigned char i; UART_init; j=0; //初始化串口 for(i = 0;i }; while(1); } // 函数名称: UART_init串口初始化函数 // 函数功能: 在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s // 串口接收中断允许,发送中断禁止 void UART_init { //初始化串行口和波特率发生器 SCON=0x50; //选择串口工作方式1,打开接收允许 TMOD =0x20; //定时器1工作在方式2,定时器0工作在方式1 TH1 =0xfA; //实现波特率9600(系统时钟11.0592MHZ) PCON = 0x80; TR1 =1; //启动定时器T1 ET1 =0; ES=1; //允许串行口中断 PS=1; //设计串行口中断优先级 EA =1; //单片机中断允许 } void COM_send(void) { unsigned char point = 0; for(point=0;str[point]!='\0';point++) //连续发送二十位数据 //把缓存区的数据都发送到串口 { SBUF=str[point]; while(!TI); TI=0; //str[point]='\0'; } } // 函数名称: com_interrup串口接收中断处理函数 // 函数功能: 接收包括起始位'S'在内的十位数据到数据缓冲区 void com_interrupt(void)interrupt4using 3 { unsigned char RECEIVR_buffer; bit flag=1; if(RI) //处理接收中断 { RI=0; //清除中断标志位 RECEIVR_buffer=SBUF; //接收串口数据 str[j]=SBUF; if (RECEIVR_buffer == '$') {ES=0; str[j]='\0'; SCON =0x40; //接收不允许 COM_send; //发送数据 ES=1; j=0; flag=0; SCON=0x50; //接收允许 } if(flag) j++; } } 你是程序猿对吗?会写代码的那种? 点“阅读原文”了解更多 单片机 |
|
来自: wangabcwb99e6d > 《电气》