📄 time0_int.lst
字号:
C51 COMPILER V7.01 TIME0_INT 03/25/2009 22:18:45 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE TIME0_INT
OBJECT MODULE PLACED IN time0_int.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE time0_int.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include "time0_int.h"
3
4 uint time0_re;
5
6 void ldelay(uint n)//1ms delay
7 {
8 1 uint i,j;
9 1 for(i=0;i<n;i++)
10 1 for(j=0;j<250;j++);
11 1 }
12
13 uchar Keyscan(void)
14 {
15 1 uchar temp=0x00;
16 1 if((P1&0x0F)!=0x0F)
17 1 {
18 2 ldelay(30); //消抖
19 2 if((P1&0x0F)!=0x0F)
20 2 {
21 3 temp=P1&0x0F;//保存键值
22 3 while((P1&0x0F)!=0x0F);//松手检测
23 3 }
24 2 }
25 1 P0=temp;
26 1 return temp;//返回键值
27 1 }
28
29 void KeyOperate(uchar keydata)
30 {
31 1 if(keydata!=0x00)
32 1 {
33 2
34 2 }
35 1 }
36
37 void Time0(void) interrupt 1//定时器0中断函数
38 {
39 1 uchar temp=0x00;
40 1 TH0=(65535-time0_re)/256;
41 1 TL0=(65535-time0_re)%256;//重新赋定时器0初值
42 1 //定时操作
43 1 //static uchar a=0;//用于延长定时时间
44 1 temp=Keyscan();
45 1 KeyOperate(temp);
46 1 //可能出现的问题:当有按键时,定时器还在累加,无法扫描到。
47 1 }
48
49 void Time0_init(void)//定时器0初始化
50 {
51 1 time0_re=50000;//设定50毫秒扫描间隔
52 1 TMOD=0x01;//定时器0定义为16位定时器
53 1 TH0=(65535-time0_re)/256;
54 1 TL0=(65535-time0_re)%256;//赋定时器0初值
55 1 ET0=1;//允许T0中断,设置IE
C51 COMPILER V7.01 TIME0_INT 03/25/2009 22:18:45 PAGE 2
56 1 EA=1;//开放CPU中断
57 1 TR0=1;//起动定时器,设置TCON
58 1 }
59
60 void main()
61 {
62 1 Time0_init();
63 1 while(1);
64 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 309 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 1
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 + -