串口助手发送用HEX模式,接收用文本模式
- #include "STC8G.h"
- #include "intrins.h"
- /*
- void UartInit(void) //115200bps@35MHz
- {
- SCON = 0x50; //8位数据,可变波特率
- AUXR |= 0x40; //定时器时钟1T模式
- AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
- TMOD &= 0x0F; //设置定时器模式
- TL1 = 0xB4; //设置定时初始值
- TH1 = 0xFF; //设置定时初始值
- ET1 = 0; //禁止定时器%d中断
- TR1 = 1; //定时器1开始计时
- }*/
- void UartInit(void) //115200bps@33.1776MHz
- {
- SCON = 0x50; //8位数据,可变波特率
- AUXR |= 0x40; //定时器时钟1T模式
- AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
- TMOD &= 0x0F; //设置定时器模式
- TL1 = 0xB8; //设置定时初始值
- TH1 = 0xFF; //设置定时初始值
- ET1 = 0; //禁止定时器%d中断
- TR1 = 1; //定时器1开始计时
- }
- void GPI_Init(void)
- {
- P0M0 = 0x00;
- P0M1 = 0x00;
- P1M0 = 0x00;
- P1M1 = 0x00;
- P2M0 = 0x00;
- P2M1 = 0x00;
- P3M0 = 0x00;
- P3M1 = 0x00;
- P4M0 = 0x00;
- P4M1 = 0x00;
- P5M0 = 0x00;
- P5M1 = 0x00;
- // P31 = 0; //PWM关
- }
- /* 串口发送字节数据函数 参数是你要发送的字节 */
- void UartSend_Data(unsigned char dat)
- {
- SBUF = dat; // 把要发送的数据给了SBUF寄存器
- while(!TI); // 等待数据发送完成
- TI = 0; // 清除发送完成标志位
- }
- void main()
- {
- /* 定义一个8位变量 用于接收串口接收的字节 */
- unsigned char x =0;
- /* IO设置*/
- GPI_Init();
- UartInit(); // 串口初始化
- while (1)
- {
- /* SBUF = 0x01; // 把要发送的数据给了SBUF寄存器
- while(!TI); // 等待数据发送完成
- TI = 0;
- if (TI)
- {
- TI = 0; //清中断标志
- P31 = !P31; //测试PWM端口
- }*/
- if(RI)// 如果串口接收到数据
- {
- RI = 0; //清中断标志
- x =SBUF;
- if (x == 0x01)
- {
- P32 = !P32; //翻转MOS管状态
- UartSend_Data('l');
- }
- if (x == 0x02)
- {
- P33 = !P33; //翻转led状态
- UartSend_Data('m');
- // SBUF = 'm'; // 把要发送的数据给了SBUF寄存器
- // while(!TI); // 等待数据发送完成
- // TI = 0; // 清除发送完成标志位
- }
- }
- }
- }
复制代码 |