📄 freqtest.lst
字号:
C51 COMPILER V8.02 FREQTEST 01/12/2009 18:38:55 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE FREQTEST
OBJECT MODULE PLACED IN FreqTest.OBJ
COMPILER INVOKED BY: D:\keil\C51\BIN\C51.EXE FreqTest.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG51.h>
2 #include <1602_Drive.h>
3
4
5 /******************************************************************
6 * 定义接口: *
7 * 液晶显示器的接口“1602_Drive.h”库函数中已经定义 *
8 * 定义待测方波频率的接口: *
9 * P3^5(T0口)做时钟输入接口; *
10 ******************************************************************/
11
12 //==================================================================
13 //用测量脉冲次数的方法时定义的定时1s的参数
14 #define THCLK 0x3c
15 #define TLCLK 0xd4
16 #define CntNum 20
17 //==================================================================
18 //定义中间变量
19 unsigned int Cnt;
20 unsigned int tmp;
21 unsigned char outcnt[8];
22 //==================================================================
23 //将测量的整数装换为标准有效的字符串
24 void NumToChar(void)
25 { unsigned char i;
26 1 outcnt[0]=tmp/10000+48;tmp%=10000;
27 1 outcnt[1]=tmp/1000+48;tmp%=1000;
28 1 outcnt[2]=tmp/100+48;tmp%=100;
29 1 outcnt[3]=tmp/10+48;tmp%=10;
30 1 outcnt[4]=tmp+48;
31 1 outcnt[5]='H';
32 1 outcnt[6]='z';
33 1 outcnt[7]='\0';
34 1 for(i=0;i<4;i++) //将字符中数字的最高有效位之前的'0'清空为‘ ’。
35 1 { if(outcnt[i]=='0')outcnt[i]=' ';
36 2 else break;
37 2 }
38 1 }
39 //==================================================================
40 //静态显示文本
41 void Static_LCD_Print()
42 { GotoXY(0,0);
43 1 Print("Freq is:");
44 1 GotoXY(1,1);
45 1 Print("Made by YeHao");
46 1 }
47 //==================================================================
48 //动态显示数据
49 void Dynamic_LCD_Print()
50 { NumToChar();
51 1 GotoXY(9,0);
52 1 Print(outcnt);
53 1 }
54 //==================================================================
55
C51 COMPILER V8.02 FREQTEST 01/12/2009 18:38:55 PAGE 2
56 /******************************************************************
57 *用定时计数器T0做脉冲计数器(下跳沿有效),开始与暂停由T1控制 *
58 *定时计数器T1做定时中断,定时1s,定时开启置T0开始计数,定时完毕置 *
59 *T0为暂停,关闭T1,读取计数数据并清空计数器,将计数数据装换为有效 *
60 *规范的字符串显示后再开启T0和T1,进入下一轮测量 *
61 ******************************************************************/
62 void Initial_C51()
63 { TH0=TL0=0;
64 1 TH1=THCLK;
65 1 TL1=TLCLK;
66 1 TR0=0;
67 1 TMOD=0x15;
68 1 IE=0x88;
69 1 TR1=0;
70 1 Cnt=CntNum;
71 1 }
72
73 void timer1() interrupt 3 //定时50ms
74 {
75 1 TH1=THCLK;
76 1 TL1=TLCLK;
77 1 if(--Cnt==0)
78 1 {
79 2 TR0=0;
80 2 TR1=0;
81 2 Cnt=CntNum;
82 2 tmp=TH0*256+TL0;
83 2 TH0=TL0=0;
84 2 Dynamic_LCD_Print();
85 2 //TR0=1;
86 2 //TR1=1;
87 2 }
88 1 }
89
90 void main(void)
91 {
92 1 Initial_C51();
93 1 LCD_Initial();
94 1 Static_LCD_Print();
95 1 TR0=1;
96 1 TR1=1;
97 1 do{ //空循环用于执行其他任务
98 2 }while(1);
99 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 505 ----
CONSTANT SIZE = 23 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 1
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -