📄 text1.lst
字号:
C51 COMPILER V6.12 TEXT1 02/05/2006 15:29:06 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN .\Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\Text1.c DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 unsigned char i,j,t,m,DelayTime,DispBuf[3];
3 //单片机脉搏测量仪源程序
4 //作者:吴汉清 ntwhq@tom.com
5 unsigned int n,mb;
6 unsigned char code
7 BitTab[3]={0xf7,0xef,0xdf};//位驱动码
8 unsigned char code
9 DispTab[10]={0x81,0xcf,0x92,0x86,0xcc,0xa4,0xa0,0x8f,0x80,0x84};//字形码
10 sbit P3_0=P3^0;
11 void delay(DelayTime);
12 main() //主程序
13 {
14 1 TMOD=0x01; //定时器T0工作于方式1
15 1 TH0=0xec;
16 1 TL0=0x78; //T0定时时间为5ms
17 1 IE=0X83; //开中断
18 1 IT0=1; //外部中断0为边沿触发方式
19 1 TR0=1; //开定时器T0
20 1 for(;;) //脉搏指示灯控制
21 1 {
22 2 if(P3_0==0)
23 2 {
24 3 delay(200);
25 3 P3_0=1;
26 3 }
27 2 }
28 1 }
29 external0() interrupt 0//外部中断服务程序
30 {
31 1 P3_0=0; //点亮指示灯
32 1 if(n==0)
33 1 mb=0;
34 1 else
35 1 mb=12000/n; //计算每分钟脉搏数
36 1 DispBuf[2]=mb%10;//取个位数
37 1 mb=mb/10;
38 1 DispBuf[1]=mb%10;//取十位数
39 1 DispBuf[0]=mb/10;//取百位数
40 1 n=0;
41 1 }
42 Timer0() interrupt 1//定时中断服务程序
43 {
44 1 TH0=0xec;
45 1 TL0=0x78;
46 1 t=BitTab[j];//取位值
47 1 P3=P3|0x38;//P3.3-P3.5送1
48 1 P3=P3&t; //P3.3-P3.5输出取出的位值
49 1 t=DispBuf[j];//取出待显示的数
50 1 t=DispTab[t];//取字形码
51 1 P1=t; //字型码由P3输出显示
52 1 j++; //j作为数码管的计数器,取值0-2,显示程序通过它确认显示哪个数码管
53 1 if(j==3)
54 1 j=0;
55 1 n++;
C51 COMPILER V6.12 TEXT1 02/05/2006 15:29:06 PAGE 2
56 1 if(n==2000)//10秒钟测不到心率,n复位
57 1 n=0;
58 1 }
59 void delay(DelayTime)//延时子程序
60 {
61 1 for(;DelayTime>0;DelayTime--)
62 1 {
63 2 for(i=0;i<250;i++)
64 2 ;
65 2 }
66 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 273 ----
CONSTANT SIZE = 13 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 ----
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 + -