|
串口助手發(fā)送用HEX模式,接收用文本模式
- #include "STC8G.h"
- #include "intrins.h"
- /*
- void UartInit(void) //115200bps@35MHz
- {
- SCON = 0x50; //8位數(shù)據(jù),可變波特率
- AUXR |= 0x40; //定時器時鐘1T模式
- AUXR &= 0xFE; //串口1選擇定時器1為波特率發(fā)生器
- TMOD &= 0x0F; //設(shè)置定時器模式
- TL1 = 0xB4; //設(shè)置定時初始值
- TH1 = 0xFF; //設(shè)置定時初始值
- ET1 = 0; //禁止定時器%d中斷
- TR1 = 1; //定時器1開始計時
- }*/
- void UartInit(void) //115200bps@33.1776MHz
- {
- SCON = 0x50; //8位數(shù)據(jù),可變波特率
- AUXR |= 0x40; //定時器時鐘1T模式
- AUXR &= 0xFE; //串口1選擇定時器1為波特率發(fā)生器
- TMOD &= 0x0F; //設(shè)置定時器模式
- TL1 = 0xB8; //設(shè)置定時初始值
- TH1 = 0xFF; //設(shè)置定時初始值
- 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關(guān)
- }
- /* 串口發(fā)送字節(jié)數(shù)據(jù)函數(shù) 參數(shù)是你要發(fā)送的字節(jié) */
- void UartSend_Data(unsigned char dat)
- {
- SBUF = dat; // 把要發(fā)送的數(shù)據(jù)給了SBUF寄存器
- while(!TI); // 等待數(shù)據(jù)發(fā)送完成
- TI = 0; // 清除發(fā)送完成標(biāo)志位
- }
- void main()
- {
- /* 定義一個8位變量 用于接收串口接收的字節(jié) */
- unsigned char x =0;
- /* IO設(shè)置*/
- GPI_Init();
- UartInit(); // 串口初始化
- while (1)
- {
- /* SBUF = 0x01; // 把要發(fā)送的數(shù)據(jù)給了SBUF寄存器
- while(!TI); // 等待數(shù)據(jù)發(fā)送完成
- TI = 0;
- if (TI)
- {
- TI = 0; //清中斷標(biāo)志
- P31 = !P31; //測試PWM端口
- }*/
- if(RI)// 如果串口接收到數(shù)據(jù)
- {
- RI = 0; //清中斷標(biāo)志
- x =SBUF;
- if (x == 0x01)
- {
- P32 = !P32; //翻轉(zhuǎn)MOS管狀態(tài)
- UartSend_Data('l');
- }
- if (x == 0x02)
- {
- P33 = !P33; //翻轉(zhuǎn)led狀態(tài)
- UartSend_Data('m');
- // SBUF = 'm'; // 把要發(fā)送的數(shù)據(jù)給了SBUF寄存器
- // while(!TI); // 等待數(shù)據(jù)發(fā)送完成
- // TI = 0; // 清除發(fā)送完成標(biāo)志位
- }
- }
- }
- }
復(fù)制代碼 |
|