📄 isr.lst
字号:
C51 COMPILER V7.06 ISR 03/02/2006 23:49:39 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE ISR
OBJECT MODULE PLACED IN ISR.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ISR.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /******************************************************************
2 本程序只供学习使用,未经作者许可,不得用于其它任何用途
3 我的邮箱:computer-lov@tom.com
4 欢迎访问我的blog: http://computer00.21ic.org
5
6 ISR.C文件 中断处理函数
7
8 Created by Computer-lov
9 Date: 2004.11.12
10
11 Edit date:2006.3.2
12
13 Version V1.1
14 Copyright(C) Computer-lov 2004-2014
15 All rigths reserved
16 *******************************************************************/
17
18
19 #include "hardware.h"
20 #include "ISR.H"
21 #include "main.h"
22
23 void Exterior_0_interrupt(void) interrupt 0
24 {
25 1 TR0=0;
26 1 capacity_measure_end=1;
27 1 }
28
29 void Count_0_interrupt(void) interrupt 1
30 {
31 1 TVH0++;
32 1 }
33
34 void Exterior_1_interrupt(void) interrupt 2
35 {
36 1
37 1 }
38
39 void Count_1_interrup(void) interrupt 3
40 {
41 1 TL1=tl1;
42 1 TH1=th1;
43 1 SQUARE_WAVE_OUT=!SQUARE_WAVE_OUT;
44 1 }
45
46 void Serial_port_interrupt(void) interrupt 4
47 {
48 1
49 1 }
50
51 unsigned char key_old=0,key_new=0,key=0,key_pressed_time=0,time_out=0;
52
53 /*--------------------------------------------------------------------------
54 定时-计数器2中断
55 采用定时方式,10ms中断一次
C51 COMPILER V7.06 ISR 03/02/2006 23:49:39 PAGE 2
56 ---------------------------------------------------------------------------*/
57 void Count_2_interrupt(void) interrupt 5
58 {
59 1 TF2=0;
60 1 if(frequency_measure_time){FREQUENCY_IN_ENABLE=1;frequency_measure_time--;}
61 1 else {FREQUENCY_IN_ENABLE=0;frequency_measure_end=0;}
62 1 if(key)return; //如果上次按键未处理,则返回
63 1 KEY_IN=0xFF; //释放IO
64 1 KEY_IN_ENABLE=0; //开键盘输入
65 1 if((KEY_IN&0x0F)==0x0F) //按键释放
66 1 {
67 2 if(!key_old) //如果上次无按键按下
68 2 {
69 3 KEY_IN_ENABLE=1;
70 3 return; //返回
71 3 }
72 2 else //如果上次有按键按下
73 2 {
74 3 if(key_pressed_time>100) //按键时间超过一秒,长按键码
75 3 {
76 4 key=key_old+0x80; //长按键码等于普通按键码加0x80
77 4 }
78 3 else if(key_pressed_time>0)
79 3 {
80 4 key=key_old;
81 4 }
82 3 key_old=0;
83 3 }
84 2 KEY_IN_ENABLE=1;
85 2 return;
86 2 }
87 1 else //按键按下
88 1 {
89 2 key_new=0;
90 2 if(!ENTER)key_new+=KEY_ENTER; //ENTER键按下
91 2 if(!DOWN)key_new+=KEY_DOWN; //DOWN键按下
92 2 if(!UP)key_new+=KEY_UP; //UP键按下
93 2 if(!MENU)key_new+=KEY_MENU; //MENU键按下
94 2 if(key_new==key_old) //如果按键按下长于10ms
95 2 {
96 3 if(key_pressed_time>100) //如果按键按下超过1s
97 3 {
98 4 KEY_IN_ENABLE=1;
99 4 return;
100 4 }
101 3 else
102 3 {
103 4 key_pressed_time++;
104 4 }
105 3 }
106 2 else
107 2 {
108 3 key_pressed_time=0;
109 3 }
110 2 key_old=key_new; //保存本次按键值
111 2 }
112 1 KEY_IN_ENABLE=1;
113 1 }
114
115
C51 COMPILER V7.06 ISR 03/02/2006 23:49:39 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 164 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 ----
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 + -