串口助手發送用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; // 清除發送完成標志位
- }
- }
- }
- }
復制代碼 |