📄 用丁丁斑竹的仿真器调试简单串口接收,发送程序.lst
字号:
C51 COMPILER V8.05a 用丁丁斑竹的仿真芲礯试简单串口接收_发送程 03/30/2007 15:27:05 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 用丁丁斑竹的仿真芲礯试简单串口接收_发送程
OBJECT MODULE PLACED IN 用丁丁斑竹的仿真器调试简单串口接收,发送程序.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 用丁丁斑竹的仿真器调试简单串口接收,发送程序.C BROWSE DEBUG OBJECTEXTEND
line level source
1 //用丁丁斑竹的仿真器调试简单串口接收,发送程序(DieHeart)
2 //
3 //
4 //昨天灌了一杯<<用丁丁斑竹的仿真器调试简单串口发送程序>>,连接请点击
5 //http://www.daxia.com/bbs/moredata.asp?id=40091&syid=440992
6 //但是只涉及到了用51的串口发送,没有接收,有点遗憾.
7 //
8 //今天这个对收发都进行测试.
9 //请初学参考,DX拍砖!
10 //
11 //
12 /********************************************************************/
13 /*试验串行口通信的例子 DieHeart. Sep 14th,2004 */
14 /********************************************************************/
15
16 //这是包含默认的寄存器头文件,
17 //该文件在keil自己的目录里,包含了所有52内核的寄存器定义。
18 #include <reg51.h>
19
20 //这是特殊寄存器位定义,IO也是特殊寄存器的位
21 sbit key1=P3^2;
22 sbit key2=P3^5;
23 sbit key3=P2^4;
24 sbit key4=P2^5;
25
26 sbit led3=P1^0;
27 sbit led4=P1^1;
28 sbit led5=P1^2;
29 sbit led6=P1^3;
30
31 //包含_getkey读字符库函数,
32 //目的是确定标准输入是否为COM口,学习与MCU51的联机通信
33
34 //这是设置串口模式的自定义函数,参数可以修改,只要与计算机的串行数据格式一致即可!
35 void stdio(void)
36 {
37 1 SCON = 0x50;//串口工作方式设置字节,1个起始位,8个数据位,1个停止位组成10位帧
38 1 PCON = 0x80;//波特率加倍模式
39 1 TMOD = 0x20;//COM2:自动重置初值的8位定时/计数器
40 1 TH1 = 0xf4;//串行口波特率发生器,=256-f/12/16/9600,f=22118400
41 1 TR1 = 1; //启动T1
42 1 TI = 1; //中断方式允许位
43 1 }
44
45 void main(void)
46 {
47 1 char key;
48 1 stdio();
49 1 while(1)
50 1 {
51 2 if(!key1) //检测key1是否按下,按下时程序会读到该位为0,平时为1
52 2 {
53 3 led3=0; //点亮LED3
54 3 led4=1;
55 3 led5=1;
C51 COMPILER V8.05a 用丁丁斑竹的仿真芲礯试简单串口接收_发送程 03/30/2007 15:27:05 PAGE 2
56 3 led6=1;
57 3 // printf("1"); //串行输出字符"1"
58 3 }
59 2 if(!key2) //检测key2是否按下,按下时程序会读到该位为0,平时为1
60 2 {
61 3 led3=1;
62 3 led4=0; //点亮LED4
63 3 led5=1;
64 3 led6=1;
65 3 // printf("2"); //串行输出字符"2"
66 3 }
67 2 if(RI) //判断串口是否收到数据
68 2 {
69 3 //key=_getkey(); //读串口数据
70 3 switch(key)
71 3 {
72 4 case 1: //从串口收到数据1
73 4 {
74 5 led3=1;
75 5 led4=1;
76 5 led5=0; //点亮LED5
77 5 led6=1;
78 5 // printf("3"); //串行输出字符"3"
79 5 }
80 4 break;
81 4 case 2: //从串口收到数据2
82 4 {
83 5 led3=1;
84 5 led4=1;
85 5 led5=1;
86 5 led6=0; //点亮LED6
87 5 // printf("4"); //串行输出字符"4"
88 5 }
89 4 break;
90 4 }
91 3 }
92 2 }
93 1 }
94
95 /****************************************************/
96 /* 使用方法: */
97 /* 将程序下载到仿真器,并置脱机运行模式 */
98 /* 保持仿真器与计算机的连接状态 */
99 /* 启动串口工具软件,并设置与单片机一致的波特率 */
100 /****************************************************/
101
102 /****************************************************/
103 /* 运行效果: */
104 /* 按KEY1,LED3亮,同时计算机接收到许多字符"3" */
105 /* 按KEY2,LED4亮,同时计算机接收到许多字符"4" */
106 /* OK啦,和昨天的一样! */
107 /* 从串口工具软件发送1, ? */
108 /* LED1亮,同时计算机接收到"1" */
109 /* 从串口工具软件发送2, */
110 /* LED2亮,同时计算机接收到"2" */
111 /* */
112 /* Hoho,OK! */
113 /* */
114 /* ^-^ DieHeart ^-^ */
115 /****************************************************/
C51 COMPILER V8.05a 用丁丁斑竹的仿真芲礯试简单串口接收_发送程 03/30/2007 15:27:05 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 74 ----
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -