📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 12/20/2008 10:09:30 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil3\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //-----------------------------------------------------------------------------//
2 //单片机心律计C51程序---2008-11-11---by tjx------------------------------------//
3 //-----------------------------------------------------------------------------//
4
5 //-----------------------------------------------------------------------------//
6 //定义各个接口-----------------------------------------------------------------//
7 //-----------------------------------------------------------------------------//
8 #include <AT89X52.H>
9 #include<absacc.h>
10 #include<INTRINS.h>
11 #define uint unsigned int //定义一下方便编程
12 #define uchar unsigned char //定义一下方便编程
13 #define ulong unsigned long //定义一下方便编程
14 #define key P3_4 //定义启动按牛口
15 #define signal P1_3 //定义信号输入口
16 #define sw P1_6 //定义拨动开关口
17 #define baiwei P2_5 //定义百位驱动口
18 #define shiwei P2_6 //定义十位驱动口
19 #define gewei P2_7 //定义个位驱动口
20 #define lamp0 P2_0 //定义灯一驱动口
21 #define lamp1 P1_7 //定义灯二驱动口
22 #define SEGDATA P0 //定义七段译码输出口
23 code uchar datab[11]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x3F};
24 //定义共阳极七段译码值
25 uint num=0,i=0; //定义心律计数值
26 uchar ge,shi,bai;
27 bit flag=0; //定义时间标志位
28 //-----------------------------------------------------------------------------//
29 //定义完毕---------------------------------------------------------------------//
30 //-----------------------------------------------------------------------------//
31
32 //-----------------------------------------------------------------------------//
33 //单片机初始化函数-------------------------------------------------------------//
34 //-----------------------------------------------------------------------------//
35 void mcuint(void)
36 {
37 1 lamp0=1;
38 1 lamp1=1;
39 1 TMOD=0x11;
40 1 TL0=0x3C;
41 1 TH0=0xF6;
42 1 TL1=0xB0;
43 1 TH1=0x3C;
44 1 IE=0x8A;
45 1 IP=0x08;
46 1 TR0=1;
47 1 }
48 //-----------------------------------------------------------------------------//
49 //函数完毕---------------------------------------------------------------------//
50 //-----------------------------------------------------------------------------//
51
52 //-----------------------------------------------------------------------------//
53 //延时1ms的函数----------------------------------------------------------------//
54 //-----------------------------------------------------------------------------//
55 void delay1ms(uint count)
C51 COMPILER V8.08 MAIN 12/20/2008 10:09:30 PAGE 2
56 {
57 1 int m,n;
58 1 for(m=0;m<count;m++)
59 1 for(n=0;n<59;n++)
60 1 ;
61 1 }
62 //-----------------------------------------------------------------------------//
63 //函数完毕---------------------------------------------------------------------//
64 //-----------------------------------------------------------------------------//
65
66 //-----------------------------------------------------------------------------//
67 //T0中断服务函数,作用是每5ms扫描一次数码管------------------------------------//
68 //-----------------------------------------------------------------------------//
69 void timer0() interrupt 1
70 {
71 1 TL0=0x3C;
72 1 TH0=0xF6;
73 1
74 1 ge=num%10;
75 1 shi=(num/10)%10;
76 1 bai=num/100;
77 1
78 1 shiwei=1;baiwei=1;
79 1 SEGDATA=datab[ge];
80 1 gewei=0;
81 1 delay1ms(1);
82 1
83 1 gewei=1;baiwei=1;
84 1 SEGDATA=datab[shi];
85 1 shiwei=0;
86 1 delay1ms(1);
87 1
88 1 gewei=1;shiwei=1;
89 1 SEGDATA=datab[bai];
90 1 baiwei=0;
91 1 delay1ms(1);
92 1 baiwei=1;
93 1 }
94 //-----------------------------------------------------------------------------//
95 //函数完毕---------------------------------------------------------------------//
96 //-----------------------------------------------------------------------------//
97
98 //-----------------------------------------------------------------------------//
99 //T1中断函数,作用是一分钟计时,时间到置标志位为1,lamp0用于检测T1是否工作-----//
100 //-----------------------------------------------------------------------------//
101 void timer1() interrupt 3
102 {
103 1 TL1=0xB0;
104 1 TH1=0x3C;
105 1 i++;
106 1 lamp0=~lamp0;
107 1 if(i==600)
108 1 {i=0;flag=1;}
109 1 }
110 //-----------------------------------------------------------------------------//
111 //函数完毕---------------------------------------------------------------------//
112 //-----------------------------------------------------------------------------//
113
114
115 //-----------------------------------------------------------------------------//
116 //测量心律函数-----------------------------------------------------------------//
117 //-----------------------------------------------------------------------------//
C51 COMPILER V8.08 MAIN 12/20/2008 10:09:30 PAGE 3
118 void celiang(void)
119 {
120 1 num=0;
121 1 while(sw==1)
122 1 {
123 2 if(key==0)
124 2 {
125 3 TR1=1;
126 3 lamp1=0;
127 3 while(flag==0)
128 3 {
129 4 while(signal) ;
130 4 while(~signal) ;
131 4 if(signal==1) delay1ms(20);
132 4 if(signal==1) num++;
133 4 delay1ms(50);
134 4 }
135 3 while(flag==1)
136 3 {
137 4 TR1=0;
138 4 lamp1=1;
139 4 if(key==0)
140 4 {
141 5 flag=0;
142 5 num=0;
143 5 delay1ms(400);
144 5 }
145 4 }
146 3 }
147 2 }
148 1 while(sw==0)
149 1 {
150 2 num=123;
151 2 }
152 1 }
153 //-----------------------------------------------------------------------------//
154 //函数完毕---------------------------------------------------------------------//
155 //-----------------------------------------------------------------------------//
156
157 //-----------------------------------------------------------------------------//
158 //主函数,开机初始化单片机,并显示2s的888,用于检测笔画是否接正确--------------//
159 //-----------------------------------------------------------------------------//
160 void main(void)
161 {
162 1 mcuint();
163 1 num=888;
164 1 delay1ms(400);
165 1 while(1)
166 1 {
167 2 celiang();
168 2 }
169 1 }
170 //-----------------------------------------------------------------------------//
171 //主函数完毕-------------------------------------------------------------------//
172 //-----------------------------------------------------------------------------//
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 375 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V8.08 MAIN 12/20/2008 10:09:30 PAGE 4
DATA SIZE = 7 ----
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 + -