📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 12/15/2007 15:03:53 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*****************************************************
2 激情创造,精彩无限-------欢迎进入单片机的世界
3 *****************************************************/
4 /*****************************************************
5 程序说明:本程序是将串口接收到的数据中的A的个数进行计算,显示结果
6 硬件连接:使用实验箱BACK 3部分电路。
7 程序版本:
8 作者:ZJ
9 编写时间:2007年12月11日
10 修改记录:
11 备注:
12 *****************************************************/
13
14 #include <reg52.h>
15
16 sbit SEGLOCK = P1^3;
17 sbit POSITLOCK = P1^2;
18
19 code unsigned char LedCode[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
20 code unsigned char LedPosit[] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00};
21
22 unsigned char ch; //定义一个接收数据的临时变量
23 unsigned char number;
24
25 void Delay (unsigned int Dat)
26 {
27 1 unsigned int i;
28 1 for (i=0;i<Dat;i++);
29 1 }
30
31 void Display (void)
32 {
33 1 P0 = LedCode[number/10]; //送出十位数字
34 1 SEGLOCK = 1; //锁存段码
35 1 SEGLOCK = 0;
36 1 P0 = LedPosit[6]; //送出十位的位选信号
37 1 POSITLOCK = 1; //锁存位选信号
38 1 POSITLOCK = 0;
39 1 Delay(20); //延时
40 1 P0 = LedPosit[8]; //送出消隐信号
41 1 POSITLOCK = 1;
42 1 POSITLOCK = 0;
43 1
44 1 P0 = LedCode[number%10]; //送出个位数字
45 1 SEGLOCK = 1; //锁存段码
46 1 SEGLOCK = 0;
47 1 P0 = LedPosit[7]; //送出个位的位选信号
48 1 POSITLOCK = 1; //锁存位选信号
49 1 POSITLOCK = 0;
50 1 Delay(20); //延时
51 1 P0 = LedPosit[8]; //送出消隐信号
52 1 POSITLOCK = 1;
53 1 POSITLOCK = 0;
54 1 }
55
C51 COMPILER V7.06 MAIN 12/15/2007 15:03:53 PAGE 2
56 void main (void)
57 {
58 1 SCON = 0x50; //设定串口的工作方式
59 1 TMOD = (TMOD & 0x0f) | 0x20; //设定T1作为波特率发生器的工作模式
60 1 TH1 = -11059200L/32/12/9600; //设定T1的初值
61 1 TL1 = TH1;
62 1 TR1 = 1; //启动波特率发生器
63 1 ES = 1; //开启串口中断
64 1 EA = 1; //开启总的中断
65 1 while (1)
66 1 {
67 2 Display(); //主程序里循环执行显示程序
68 2 }
69 1 }
70
71 void Uart_int (void) interrupt 4 //串口中断服务程序
72 {
73 1 if ( RI==1 ) //判断是否有数据收到
74 1 {
75 2 ch = SBUF; //有数据收到,将数据从接收缓冲器中取出
76 2 RI = 0;
77 2 if ( ch=='a' ) //判断取出的数据是否为'A'字母
78 2 if( ++number>=100 ) //如果是'A'字母,对计数变量加1,并判断是否超过100
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -