📄 puls_counter.lst
字号:
C51 COMPILER V8.02 PULS_COUNTER 09/13/2007 16:35:01 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE PULS_COUNTER
OBJECT MODULE PLACED IN Puls_Counter.OBJ
COMPILER INVOKED BY: d:\Keil3\C51\BIN\C51.EXE Puls_Counter.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <c8051f020.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4
5 #include <Lcd1602.h>
6 #include <DS18B20_Driver.h>
7
8 void Timer1_Init(void);
9 void Timer3_Init (int counts);
10 uchar Puls_Counter(void);
11 void Display_Pusle(uchar times);
12
13 extern void Temperature_Display(uint Temp);
14
15
16 sfr16 TMR3RL = 0x92; // Timer3 reload value
17 sfr16 TMR3 = 0x94; // Timer3 counter
18
19 bit Time_f;
20 uint Sec;
21
22 uchar Puls_Counter(void)
23 {
24 1 Lcd1602_Clear_Line(2);Lcd1602_Clear_Line(1);
25 1 Lcd1602_Write_String(1,1,"Wait!");
26 1 Time_f = 0 ; TL1 = 0x00; TH1 = 0x00; // Initilize
27 1
28 1 TMR3CN |= 0x04; TR1 =1; // Open the timer3 and the counter1
29 1 while(!Time_f)
30 1 { if(Sec%50==0){
31 3 Lcd1602_Write_String(1,7,"Time:");
32 3 Lcd1602_Write_char(Sec/500+'0');
33 3 Lcd1602_Write_char((Sec/50)%10+'0');
34 3 Temperature_Display(Get_Temp());
35 3 }
36 2
37 2 } // Wait for 1 sec
38 1 TMR3CN &=~0x04; TR1 =0; // Close the timer3 and the counter1
39 1
40 1 return(TL1);
41 1 }
42
43
44
45 void Display_Pusle(uchar times)
46 {
47 1 uchar a[3]; uchar i;
48 1
49 1 a[0] = times/100;
50 1 a[1] = (times-a[0]*100)/10;
51 1 a[2] = (times-a[0]*100-a[1]*10);
52 1
53 1 // Lcd1602_Clear_Line(1);
54 1 Lcd1602_Write_String(2,1,"P:");
55 1 for(i=0;i<3;i++){ Lcd1602_Write_char(a[i]+'0'); }
C51 COMPILER V8.02 PULS_COUNTER 09/13/2007 16:35:01 PAGE 2
56 1 }
57
58
59 void Timer1_Init(void)
60 {
61 1 TMOD |= 0x40; // 13-bit ,counter1 Mode
62 1 }
63
64 void Timer3_Init (int counts) // counts = 36864 T = 0.02s
65 {
66 1 //CKCON = 0x00;
67 1 TMR3CN = 0x00; // Stop Timer3; Clear TF3;
68 1 // use SYSCLK/12 as timebase
69 1 TMR3RL = -counts; // Init reload values
70 1 TMR3 = 0xffff; // set to reload immediately
71 1 EIE2 |= 0x01; // enable Timer3 interrupts
72 1
73 1 // TMR3CN |= 0x04; // start Timer3
74 1
75 1 }
76
77
78 void Timer3_ISR(void) interrupt 14 // counts = 36864 T = 0.02s
79 {
80 1 static uint i = 0;
81 1 TMR3CN &= ~0x80; //TF3 = 0;
82 1 if (i==3000){ i=0; Sec = 0; Time_f = 1 ; }
83 1 i++; Sec++;
84 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 285 ----
CONSTANT SIZE = 15 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 4
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 + -