51单片机 uart_test.c
来源:互联网 发布:赛道狂飙 国家永恒mac 编辑:程序博客网 时间:2024/05/16 11:01
#include <reg52.h>#include "utilities.h"bit frameFlag = 0;bit txdFlag = 0;uint8_t rxdCnt = 0;uint8_t pdata rxdBuf[64];extern void uartAction(uint8_t * buf, uint8_t len);void configUart(uint8_t baud) { SCON = 0x50; TMOD &= 0x0F; TMOD |= 0x20; TL1 = 256 - 11059200 / 12 / 16 / 2 / baud; TH1 = TL1; ET1 = 0; ES = 1; //TR1 = 1;}void uartWrite(uint8_t * buf, uint8_t len) { while (len--) { txdFlag = 0; SBUF = *buf++; while (!txdFlag); }}uint8_t uartRead(uint8_t * buf, uint8_t len) { uint8_t i; if (len > rxdCnt) len = rxdCnt; for (i = 0; i < len; i++) { buf[i] = rxdBuf[i]; } rxdCnt = 0; return len;}void uartRxMonitor(uint8_t ms) { static uint8_t backupCnt = 0; static uint8_t idleTmr = 0; if (rxdCnt > 0) { if (backupCnt != rxdCnt) { backupCnt = rxdCnt; idleTmr = 0; } else { if (idleTmr < 30) { idleTmr += ms; if (idleTmr >= 30) frameFlag = 1; } } } else { backupCnt = 0; }}void uartDriver() { uint8_t len; uint8_t pdata buf[40]; if (frameFlag) { frameFlag = 0; len = uartRead(buf, sizeof (buf)); uartAction(buf, len); }}void uartIntSrv() interrupt 4 { if (RI) { RI = 0; if (rxdCnt < sizeof (rxdBuf)) { rxdBuf[rxdCnt++] = SBUF; } } if (TI) { TI = 0; txdFlag = 1; }}
0 0
- 51单片机 uart_test.c
- 单片机,51c``电子琴
- 51单片机C关键字
- C/51单片机
- 51c单片机开发
- 51单片机 C语言入门教程
- 51单片机串口C程序
- 51单片机电子琴C代码
- 51单片机 C语言电子琴
- 手把手教你学单片机--51单片机C语言开发
- 手把手教你学单片机--51单片机C语言开发
- 51单片机 C 语言编程:单片机定时中断
- 51单片机 Keil C 延时程序
- 51单片机 Keil C 延时程序
- 51单片机C语言学习杂记
- 单片机C语言-51芯片
- 51单片机1602液晶程序main.c
- 51单片机数码管动态扫描C程序
- 【难】求数组中最长递增子序列,时间复杂度O(nlogn)
- 分享一个测试引擎工具的设计概念
- 网关服务器的作用
- EXT.NET 为 FormPanel设置背景颜色
- InstantiationException原因及解决办法
- 51单片机 uart_test.c
- 解一元线性同余方程组
- 搭建集群jdk安装配置
- Jugs - UVa 571 bfs
- Facebook真带来了全球16%手机销量?
- codeforces--510C--Fox And Names
- hihoCoder - 1040 - 矩形判断 (简单计算几何~)
- android:clipChildren,是否限制子View在其范围内
- 实现浮点类型的幂运算,pow(x,n)