|
- /*
- 晶振:11.0592
- */
- #include <REG52.H>
- //--------------------------定义区
- #define uchar unsigned char
- #define Uint unsigned int
- //------------------------全局区域
- uchar num; // 需要给PC发的数据
- //------------------------函数区域
- void delay(Uint z);
- void UART_init();
- void main()
- {
- UART_init();
- while (1) {
- }
- }
- /*延时函数---传入毫秒值*/
- void delay(Uint z)
- {
- Uint x;
- Uint y;
- for (x = z; x > 0; x--) {
- for (y = 114; y > 0; y--)
- ;
- }
- }
- /*串口初始化*/
- void UART_init()
- {
- // T1工作模式2 8位自动重载
- TMOD = 0x20;
- // 比特率 9600
- TH1 = 0xfd;
- TL1 = 0xfd; //
- // 设置10位异步收发器(8位数据)
- SM0 = 0;
- SM1 = 1;
- // 串口允许接收数据
- REN = 1;
- // 启动T1定时器
- TR1 = 1;
- // 打开总中断
- EA = 1;
- // 打开串口中断
- ES = 1;
- }
- /*串口通信中断*/
- void UART_T1() interrupt 4
- {
- if (RI) // 如果RI=1,接收完成
- {
- num = SBUF; // 取出缓存器里的数据
- //==============code
- P1 = SBUF; // 取出接收的数据,将数据传给LED灯的引脚点灯
- RI =0;
- num++; /* 将接收到的数据+1处理*/
- SBUF = num; // 将数据丢给缓存器,等待发送
- //==============CODE_end
- RI = 0; // 软件清0,继续接收
-
- while (!TI);// TI=0时,发送未完成,等待T1=1
- TI = 0; // 软件清0,继续发送
-
- }
- }
复制代码 |
|