serial port.lst
来自「ME500——51单片机的几个中断程序」· LST 代码 · 共 118 行
LST
118 行
C51 COMPILER V8.02 SERIAL_PORT 12/18/2006 09:09:27 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SERIAL_PORT
OBJECT MODULE PLACED IN serial port.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE serial port.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /******************************************************************
2 * *
3 * ME500单片机开发系统演示程序 - 串行通迅 *
4 * *
5 * P0口 LED 显示 *
6 * *
7 * 工作芯片:AT89S52 晶振频率:11.0592MHz *
8 * *
9 * 版本: V1.0 (2006/11/20) *
10 * 作者: gguoqing (Email: gguoqing@willar.com) *
11 * 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界) *
12 * 时间: 2006/12/15 *
13 * *
14 *【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
15 *【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
16 * *
17 *******************************************************************
18 * *
19 * 描述: *
20 * *
21 * 主机发送数据给单片机,单片机接收到数据后,再发送给主机。 *
22 * *
23 * P0口LED显示接收数据的ASCII码。 *
24 * *
25 ******************************************************************/
26
27 #include <reg52.h>
28 #include <intrins.h>
29
30 #define uchar unsigned char
31 #define uint unsigned int
32
33 uchar buf;
34
35 /*********************************************************
36
37 发送数据函数
38
39 *********************************************************/
40 void senddata(uchar dat)
41 {
42 1 SBUF =dat;
43 1 while(!TI);
44 1 TI = 0;
45 1 }
46
47 /*********************************************************
48
49 串行中断服务函数
50
51 *********************************************************/
52 void serial() interrupt 4
53 {
54 1 ES = 0; //关闭串行中断
55 1 RI = 0; //清除串行接受标志位
C51 COMPILER V8.02 SERIAL_PORT 12/18/2006 09:09:27 PAGE 2
56 1 buf = SBUF; //从串口缓冲区取得数据
57 1
58 1 if(buf!=0x0D)
59 1 {
60 2 if(buf!=0x0A)
61 2 senddata(buf);
62 2 P0=~buf;
63 2 }
64 1
65 1 ES = 1; //允许串口中断
66 1 }
67
68 /*********************************************************
69
70 主函数
71
72 *********************************************************/
73 void main(void)
74 {
75 1 P0 = 0xff;
76 1 P2 = 0xff;
77 1
78 1 SCON=0x50; //设定串口工作方式
79 1 PCON=0x00; //波特率不倍增
80 1
81 1 TMOD=0x20; //定时器1工作于8位自动重载模式, 用于产生波特率
82 1 EA=1;
83 1 ES = 1; //允许串口中断
84 1 TL1=0xfd;
85 1 TH1=0xfd; //波特率9600
86 1 TR1=1;
87 1
88 1 while(1); //等待串行中断
89 1
90 1 }
91
92 /*********************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 84 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?