📄 scom.lst
字号:
C51 COMPILER V7.50 SCOM 07/17/2008 13:22:51 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SCOM
OBJECT MODULE PLACED IN SCOM.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE SCOM.C BROWSE DEBUG OBJECTEXTEND
line level source
1 //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的
2
3 #include <reg51.h>
4 #include <string.h>
5 #define INBUF_LEN 4 //数据长度
6 unsigned char inbuf1[INBUF_LEN];
7 unsigned char checksum,count3 , flag,temp,ch;
8 bit read_flag=0;
9 sbit BEEP=P1^3;
10 sbit relay=P1^2;
11 sbit clk=P1^0;
12 sbit din=P1^1;
13 unsigned char code ledcode[]={0x11,0x7D,0x23,0x29,0x4D, 0x89,0x81,0x3D,0x01,0x09,0x05,\
14 0xc1,0x8f,0x61,0x83,0x87};//数码管段码
15 void leddisp(unsigned char num);
16 //初始化串口
17 void init_serialcomm(void)
18 {
19 1 SCON=0x50; //在11.0592MHz下,设置串行口波特率为9600,方式1,并允许接收
20 1 PCON=0x00;
21 1 ES=1; //开串口中断
22 1 TMOD=0x21; //定时器工作于方式2,自动装载方式
23 1 TL1=0XFD;
24 1 TH1=0XFD;
25 1 TR1=1;
26 1 EA=1;
27 1
28 1 }
29 //中断服务程序
30 void serial () interrupt 4 using 3
31
32 {
33 1 if(RI)
34 1 {
35 2 RI=0;//清中断标志
36 2 ch=SBUF;//读取接收寄存器
37 2 ch=SBUF;
38 2 leddisp(ch);//调用数码管显示子程序,将接收到的数据显示到数码管上
39 2 }
40 1 if(TI)
41 1 {
42 2 TI=0;//清发送标志位
43 2 }
44 1 }
45 //送数码管显示
46 void leddisp(unsigned char num)
47 {
48 1 unsigned char i,k;
49 1 k=ledcode[num];
50 1 for(i=0;i<8;i++)//共8位
51 1 {
52 2 if((k&0x01)==0x01)
53 2 din=1;
54 2 else
55 2 din=0;
C51 COMPILER V7.50 SCOM 07/17/2008 13:22:51 PAGE 2
56 2 clk=0;
57 2 clk=1;
58 2 k>>=1;
59 2 }
60 1
61 1 }
62
63
64
65 main()
66
67 {
68 1
69 1 init_serialcomm(); //初始化串口
70 1 leddisp(0);//数码管显示0
71 1 leddisp(1);//数码管显示1
72 1 leddisp(2);//数码管显示2
73 1 leddisp(3);//数码管显示3
74 1 while(1);
75 1 }
76
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 123 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -