STC12C5202AD 51单片机串口通信配置模板
来源:互联网 发布:淘宝经营许可 编辑:程序博客网 时间:2024/04/29 17:25
定时器方式2: 8位自动重装 波特率 9600
#include<reg52.h> void delayms(int x) { int i, j; for(i = x; i; --i) for(j= 110; j; --j); return ; } void initSCI(void) { SM0 = 0; /*Step 1 : 确定串口通信方式*/ SM1 = 1; TMOD = 0x20; /*step 2: 根据串口通信方式 确定是否设置波特率*/ TH1 = 0xfd; TL1 = 0xfd; TR1 = 1; /*step 3 :启动*/ REN = 1; EA = 1; /*step 4: 是否启用中断函数*/ ES = 1; } void putChar (unsigned char chr)//发送一个字符 { SBUF = chr; } void putStr(unsigned char str[], unsigned char n) { while( n-- ) { SBUF = str[n]; delayms(1); } } int main() { initSCI(); while(1) { putChar('A'); //operation; } return 0; } void ser() interrupt 4 { if( RI ) { RI = 0; /*Operation SBUF*/ } if( TI ) { TI = 0; } return ; }
Clue 1:发送函数中加延时 否则乱码
Clue 2:ISP软件烧写时 Step4选择外部晶体振荡器 否则乱码
(注意串口中断和发送函数 TI清零重复了 导致无法连续发送)
#include "reg51.h"#include "intrins.h"void SendData(unsigned char dat);void SendString(char *s);void delay(unsigned char n){unsigned char i, j;for(i = n; i; --i)for(j = 110; j; --j);}void main(){SCON = 0x50;TMOD = 0x20;TH1 = TL1 = 0xfd;TR1 = 1;ES = 1;EA = 1;SendString("STC12C5201AD\r\nUart Test!\r\n");while(1);}void Uart_Isr() interrupt 4 using 1{if( RI ){RI = 0;}if(TI){TI = 0;}}void SendData(unsigned char dat){SBUF = dat;while(!TI);delay(5);TI = 0;delay(5);}void SendString(char *s){while(*s){SendData(*s++);}}
- STC12C5202AD 51单片机串口通信配置模板
- 51单片机串口通信
- 51单片机串口通信
- 51单片机 串口通信
- 配置minicom与51单片机进行串口通信
- 51单片机 串口通信 中断
- 51单片机串口通信实例
- 51单片机 UART串口通信
- 51单片机的串口通信
- 51系列单片机之串口通信
- 51单片机串口通信及波特率设置
- 51单片机GPIO口模拟串口通信
- 51单片机UART串口通信开发总结
- 51单片机和PC串口异步通信
- 51单片机GPIO口模拟串口通信
- 51单片机GPIO口模拟串口通信
- STC 51 单片机 串口通信实验
- 51单片机与PC进行串口通信
- toolsets
- 巴斯卡三角形
- update .emac 2013
- linux font 安装等
- c++ & Memory consistency model
- STC12C5202AD 51单片机串口通信配置模板
- Java循环的3种方式(小结)
- C#中sealed关键字
- tmPitchAndFamily
- Hibernate的主键生成
- flashfxp无法连接
- MFC 连接SQL SERVER(ODBC方式)
- Java学习之Iterator(迭代器)的一般用法
- 挫了