?? hour.src
字號:
; hour.SRC generated from: hour.c
$NOMOD51
NAME HOUR
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
T1 BIT 0B0H.5
EA BIT 0A8H.7
IE DATA 0A8H
P0_0 BIT 080H.0
P1_0 BIT 090H.0
P0_1 BIT 080H.1
P2_0 BIT 0A0H.0
P1_1 BIT 090H.1
P0_2 BIT 080H.2
P2_1 BIT 0A0H.1
P1_2 BIT 090H.2
P0_3 BIT 080H.3
P2_2 BIT 0A0H.2
P1_3 BIT 090H.3
P0_4 BIT 080H.4
P2_3 BIT 0A0H.3
P1_4 BIT 090H.4
P0_5 BIT 080H.5
P2_4 BIT 0A0H.4
P1_5 BIT 090H.5
P0_6 BIT 080H.6
RD BIT 0B0H.7
P2_5 BIT 0A0H.5
P1_6 BIT 090H.6
P0_7 BIT 080H.7
P2_6 BIT 0A0H.6
P1_7 BIT 090H.7
ES BIT 0A8H.4
P2_7 BIT 0A0H.7
IP DATA 0B8H
RI BIT 098H.0
INT0 BIT 0B0H.2
CY BIT 0D0H.7
TI BIT 098H.1
INT1 BIT 0B0H.3
PS BIT 0B8H.4
SP DATA 081H
OV BIT 0D0H.2
WR BIT 0B0H.6
SBUF DATA 099H
PCON DATA 087H
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
IE0 BIT 088H.1
IE1 BIT 088H.3
B DATA 0F0H
ACC DATA 0E0H
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
TF1 BIT 088H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
EX1 BIT 0A8H.2
IT1 BIT 088H.2
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
PT0 BIT 0B8H.1
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
TR0 BIT 088H.4
RS1 BIT 0D0H.4
TR1 BIT 088H.6
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
DPL DATA 082H
REN BIT 098H.4
RXD BIT 0B0H.0
TXD BIT 0B0H.1
F0 BIT 0D0H.5
PSW DATA 0D0H
?PR?main?HOUR SEGMENT CODE
?DT?main?HOUR SEGMENT DATA OVERLAYABLE
?PR?initial?HOUR SEGMENT CODE
?PR?_delay?HOUR SEGMENT CODE
?DT?_delay?HOUR SEGMENT DATA OVERLAYABLE
?PR?_display?HOUR SEGMENT CODE
?PR?keyscan?HOUR SEGMENT CODE
?PR?updatee?HOUR SEGMENT CODE
?C_INITSEG SEGMENT CODE
?DT?HOUR SEGMENT DATA
EXTRN CODE (?C_STARTUP)
PUBLIC sets1
PUBLIC sets0
PUBLIC setm1
PUBLIC setm0
PUBLIC seth1
PUBLIC seth0
PUBLIC s1
PUBLIC s0
PUBLIC m1
PUBLIC m0
PUBLIC h1
PUBLIC h0
PUBLIC updatee
PUBLIC keyscan
PUBLIC _display
PUBLIC _delay
PUBLIC initial
PUBLIC main
RSEG ?DT?main?HOUR
?main?BYTE:
status?040: DS 1
keyword?041: DS 1
RSEG ?DT?_delay?HOUR
?_delay?BYTE:
ii?243: DS 2
RSEG ?DT?HOUR
h0: DS 1
h1: DS 1
m0: DS 1
m1: DS 1
s0: DS 1
s1: DS 1
seth0: DS 1
seth1: DS 1
setm0: DS 1
setm1: DS 1
sets0: DS 1
sets1: DS 1
RSEG ?C_INITSEG
DB 001H
DB h1
DB 000H
DB 001H
DB h0
DB 000H
DB 001H
DB m1
DB 000H
DB 001H
DB m0
DB 000H
DB 001H
DB s1
DB 000H
DB 001H
DB s0
DB 000H
DB 001H
DB seth1
DB 000H
DB 001H
DB seth0
DB 000H
DB 001H
DB setm1
DB 000H
DB 001H
DB setm0
DB 000H
DB 001H
DB sets1
DB 000H
DB 001H
DB sets0
DB 000H
; #pragma SRC
; #include <stdio.h>
; #include <reg51.h>
;
;
; #define TRUE 1
; #define FALSE 0
;
; #define DELAY_VALUE 3
; #define DELAY_VALUE_EXTRA 10100
;
;
;
; #define PinDrvKey1 P1_0
; #define PinDrvKey2 P1_1
; #define PinDrvKey3 P1_2
; #define PinDrvKey4 P1_3
; //鍵盤掃描的驅動線
;
;
; #define PinScanKey1 P1_4
; #define PinScanKey2 P1_5
; #define PinScanKey3 P1_6
; #define PinScanKey4 P1_7
; //鍵盤掃描的信號獲取線
;
; #define PinSegA P2_0
; #define PinSegB P2_1
; #define PinSegC P2_2
; #define PinSegD P2_3
; //七段碼的數據線
;
; #define PinSelectA P2_4
; #define PinSelectB P2_5
; #define PinSelectC P2_6
; //選擇器的數據位
;
; #define PinSelectCS P2_4
; //選擇器的片選位
;
; #define LedSelect0 0x80
; #define LedSelect1 0x90
; #define LedSelect2 0xa0
; #define LedSelect3 0xb0
; #define LedSelect4 0xc0
; #define LedSelect5 0xd0
;
; #define PinLamp P0_0
; //指示燈驅動管腳
; #define PinSpeaker P0_1
; //蜂鳴器驅動管腳
;
; sbit P0_0=P0^0;
; sbit P0_1=P0^1;
; sbit P0_2=P0^2;
; sbit P0_3=P0^3;
; sbit P0_4=P0^4;
; sbit P0_5=P0^5;
; sbit P0_6=P0^6;
; sbit P0_7=P0^7;
;
; sbit P1_0=P1^0;
; sbit P1_1=P1^1;
; sbit P1_2=P1^2;
; sbit P1_3=P1^3;
; sbit P1_4=P1^4;
; sbit P1_5=P1^5;
; sbit P1_6=P1^6;
; sbit P1_7=P1^7;
;
; sbit P2_0=P2^0;
; sbit P2_1=P2^1;
; sbit P2_2=P2^2;
; sbit P2_3=P2^3;
; sbit P2_4=P2^4;
; sbit P2_5=P2^5;
; sbit P2_6=P2^6;
; sbit P2_7=P2^7;
;
;
; void initial(void);
; //初始化子程序
; void delay(short i);
; //延時子程序
; void display(unsigned char i,unsigned char num);
; //顯示子程序,其中變量i,num含義為在第i個數碼管顯示數字num.
; unsigned char keyscan(void);
; //鍵盤掃描子程序
; void updatee(void);
;
; unsigned char h1=0;
; unsigned char h0=0;
; unsigned char m1=0;
; unsigned char m0=0;
; unsigned char s1=0;
; unsigned char s0=0;
; unsigned char seth1=0;
; unsigned char seth0=0;
; unsigned char setm1=0;
; unsigned char setm0=0;
; unsigned char sets1=0;
; unsigned char sets0=0; //設定鬧鐘的鬧定時間,設定為鬧鐘時間,鬧鈴時間定為1分鐘
;
; void main(void)
RSEG ?PR?main?HOUR
main:
USING 0
; SOURCE LINE # 104
; {
; SOURCE LINE # 105
; unsigned char status;
; unsigned char keyword;
; initial();
; SOURCE LINE # 108
LCALL initial
; //鍵盤驅動信號,發光二極管,以及蜂鳴器都設在無效狀態
; for(;;)
; SOURCE LINE # 110
?C0001:
; {
; SOURCE LINE # 111
; switch(status)
; SOURCE LINE # 112
MOV A,status?040
DEC A
JZ ?C0011
DEC A
JNZ $ + 5H
LJMP ?C0020
DEC A
JNZ $ + 5H
LJMP ?C0027
ADD A,#03H
JNZ ?C0001
; {
; SOURCE LINE # 113
; case 0:
; SOURCE LINE # 114
?C0004:
; keyword=keyscan();
; SOURCE LINE # 115
LCALL keyscan
MOV keyword?041,R7
; if(keyword==16)
; SOURCE LINE # 116
MOV A,keyword?041
XRL A,#010H
JNZ ?C0005
; {
; SOURCE LINE # 117
; if(h1==seth1&&h0==seth0&&m1==setm1&&m0==setm0)
; SOURCE LINE # 118
MOV A,h1
CJNE A,seth1,?C0006
MOV A,h0
CJNE A,seth0,?C0006
MOV A,m1
CJNE A,setm1,?C0006
MOV A,m0
CJNE A,setm0,?C0006
; {
; SOURCE LINE # 119
; PinSpeaker=FALSE;
; SOURCE LINE # 120
; delay(DELAY_VALUE);
; SOURCE LINE # 121
LCALL L?0081
; PinSpeaker=TRUE; //到達鬧鐘定時時間,蜂鳴器響
; SOURCE LINE # 122
SETB P0_1
; }
; SOURCE LINE # 123
LJMP ?C0077
?C0006:
; else
; delay(DELAY_VALUE_EXTRA);
; SOURCE LINE # 125
MOV R7,#074H
MOV R6,#027H
LCALL _delay
?C0007:
; updatee();
; SOURCE LINE # 126
; }
; SOURCE LINE # 127
LJMP ?C0077
?C0005:
; else
; if(keyword==11)status=1; //0狀態為計時狀態,1狀態為停止狀態
; SOURCE LINE # 129
MOV A,keyword?041
CJNE A,#0BH,?C0009
LJMP ?C0078
?C0009:
; else
; {
; SOURCE LINE # 131
; PinSpeaker=FALSE;
; SOURCE LINE # 132
; delay(DELAY_VALUE);
; SOURCE LINE # 133
; PinSpeaker=TRUE; //輸入有錯,蜂鳴器響
; SOURCE LINE # 134
; }
; SOURCE LINE # 135
; break;
; SOURCE LINE # 136
SJMP ?C0079
; case 1:
; SOURCE LINE # 137
?C0011:
; keyword=keyscan();
; SOURCE LINE # 138
LCALL keyscan
MOV keyword?041,R7
; if(keyword==10)status=0;
; SOURCE LINE # 139
MOV A,keyword?041
CJNE A,#0AH,?C0012
LJMP ?C0080
?C0012:
; else if(keyword==12)status=2;//2狀態為設置初值狀態;
; SOURCE LINE # 140
MOV A,keyword?041
CJNE A,#0CH,?C0014
MOV status?040,#02H
SJMP ?C0001
?C0014:
; else if(keyword==13){h0=0;
; SOURCE LINE # 141
MOV A,keyword?041
CJNE A,#0DH,?C0016
CLR A
MOV h0,A
; h1=0;
; SOURCE LINE # 142
MOV h1,A
; s0=0;
; SOURCE LINE # 143
MOV s0,A
; s1=0;
; SOURCE LINE # 144
MOV s1,A
; m0=0;
; SOURCE LINE # 145
MOV m0,A
; m1=0;}//清零
; SOURCE LINE # 146
MOV m1,A
LJMP ?C0001
?C0016:
; else if(keyword==14)status=3;//3狀態為設置鬧鐘時間狀態;
; SOURCE LINE # 147
MOV A,keyword?041
CJNE A,#0EH,?C0018
MOV status?040,#03H
LJMP ?C0001
?C0018:
; else
; {
; SOURCE LINE # 149
; PinSpeaker=FALSE;
; SOURCE LINE # 150
?C0079:
; delay(DELAY_VALUE);
; SOURCE LINE # 151
LCALL L?0081
; PinSpeaker=TRUE; //輸入有錯,蜂鳴器響
; SOURCE LINE # 152
SETB P0_1
; }
; SOURCE LINE # 153
; break;
; SOURCE LINE # 154
LJMP ?C0001
; case 2:
; SOURCE LINE # 155
?C0020:
; keyword=keyscan();
; SOURCE LINE # 156
LCALL keyscan
MOV keyword?041,R7
; if(keyword==10&&s1<=5&&m1<=5&&(h1*10+h0)<24)
; SOURCE LINE # 157
MOV A,keyword?041
XRL A,#0AH
JNZ ?C0021
MOV A,s1
SETB C
SUBB A,#05H
JNC ?C0021
MOV A,m1
SUBB A,#05H
JNC ?C0021
MOV A,h1
MOV B,#0AH
MUL AB
MOV R4,#00H
ADD A,h0
MOV R7,A
MOV A,R4
ADDC A,B
MOV R6,A
CLR C
MOV A,R7
SUBB A,#018H
MOV A,R6
XRL A,#080H
SUBB A,#080H
JNC ?C0021
; status=0;
; SOURCE LINE # 158
CLR A
MOV status?040,A
SJMP ?C0027
?C0021:
; else if(keyword==11&&s1<=5&&m1<=5&&(h1*10+h0)<24)
; SOURCE LINE # 159
MOV A,keyword?041
XRL A,#0BH
JNZ ?C0023
MOV A,s1
SETB C
SUBB A,#05H
JNC ?C0023
MOV A,m1
SUBB A,#05H
JNC ?C0023
MOV A,h1
MOV B,#0AH
MUL AB
MOV R4,#00H
ADD A,h0
MOV R7,A
MOV A,R4
ADDC A,B
MOV R6,A
CLR C
MOV A,R7
SUBB A,#018H
MOV A,R6
XRL A,#080H
SUBB A,#080H
JNC ?C0023
; status=1;
; SOURCE LINE # 160
MOV status?040,#01H
SJMP ?C0027
?C0023:
; else if(keyword<10&&keyword>=0) //輸入的是數字鍵
; SOURCE LINE # 161
MOV A,keyword?041
CLR C
SUBB A,#0AH
JNC ?C0025
MOV A,keyword?041
CLR C
SUBB A,#00H
JC ?C0025
; {
; SOURCE LINE # 162
; h1=h0;
; SOURCE LINE # 163
MOV h1,h0
; h0=m1;
; SOURCE LINE # 164
MOV h0,m1
; m1=m0;
; SOURCE LINE # 165
MOV m1,m0
; m0=s1;
; SOURCE LINE # 166
MOV m0,s1
; s1=s0;
; SOURCE LINE # 167
MOV s1,s0
; s0=keyword;
; SOURCE LINE # 168
MOV s0,keyword?041
; updatee(); //輸入的數字鍵從低位起往左移
; SOURCE LINE # 169
LCALL updatee
; }
; SOURCE LINE # 170
SJMP ?C0027
?C0025:
; else
; {
; SOURCE LINE # 172
; PinSpeaker=FALSE;
; SOURCE LINE # 173
; delay(DELAY_VALUE);
; SOURCE LINE # 174
LCALL L?0082
; PinSpeaker=TRUE; //輸入有錯,蜂鳴器響
; SOURCE LINE # 175
SETB P0_1
; }
; SOURCE LINE # 176
; case 3:
; SOURCE LINE # 177
?C0027:
; keyword=keyscan();
; SOURCE LINE # 178
LCALL keyscan
MOV keyword?041,R7
; if(keyword==10&&sets1<=5&&setm1<=5&&(seth1*10+seth0)<24)
; SOURCE LINE # 179
MOV A,keyword?041
XRL A,#0AH
JNZ ?C0028
MOV A,sets1
SETB C
SUBB A,#05H
JNC ?C0028
MOV A,setm1
SUBB A,#05H
JNC ?C0028
MOV A,seth1
MOV B,#0AH
MUL AB
MOV R4,#00H
ADD A,seth0
MOV R7,A
MOV A,R4
ADDC A,B
MOV R6,A
CLR C
MOV A,R7
SUBB A,#018H
MOV A,R6
XRL A,#080H
SUBB A,#080H
JNC ?C0028
; status=0;
; SOURCE LINE # 180
?C0080:
CLR A
MOV status?040,A
LJMP ?C0001
?C0028:
; else if(keyword==11&&sets1<=5&&setm1<=5&&(seth1*10+seth0)<24)
; SOURCE LINE # 181
MOV A,keyword?041
XRL A,#0BH
JNZ ?C0030
MOV A,sets1
SETB C
SUBB A,#05H
JNC ?C0030
MOV A,setm1
SUBB A,#05H
JNC ?C0030
MOV A,seth1
MOV B,#0AH
MUL AB
MOV R4,#00H
ADD A,seth0
MOV R7,A
MOV A,R4
ADDC A,B
MOV R6,A
CLR C
MOV A,R7
SUBB A,#018H
MOV A,R6
XRL A,#080H
SUBB A,#080H
JNC ?C0030
; status=1;
; SOURCE LINE # 182
?C0078:
MOV status?040,#01H
LJMP ?C0001
?C0030:
; else if(keyword<10&&keyword>=0) //輸入的是數字鍵
; SOURCE LINE # 183
MOV A,keyword?041
CLR C
SUBB A,#0AH
JNC ?C0032
MOV A,keyword?041
CLR C
SUBB A,#00H
JC ?C0032
; {
; SOURCE LINE # 184
; seth1=seth0;
; SOURCE LINE # 185
MOV seth1,seth0
; seth0=setm1;
; SOURCE LINE # 186
MOV seth0,setm1
; setm1=setm0;
; SOURCE LINE # 187
MOV setm1,setm0
; setm0=sets1;
; SOURCE LINE # 188
MOV setm0,sets1
; sets1=sets0;
; SOURCE LINE # 189
MOV sets1,sets0
; sets0=keyword;
; SOURCE LINE # 190
MOV sets0,keyword?041
; updatee(); //輸入的數字鍵從低位起往左移
; SOURCE LINE # 191
?C0077:
LCALL updatee
; }
; SOURCE LINE # 192
LJMP ?C0001
?C0032:
; else
; {
; SOURCE LINE # 194
; PinSpeaker=FALSE;
; SOURCE LINE # 195
; delay(DELAY_VALUE);
; SOURCE LINE # 196
LCALL L?0082
; PinSpeaker=TRUE; //輸入有錯,蜂鳴器響
; SOURCE LINE # 197
SETB P0_1
; }
; SOURCE LINE # 198
;
; }
; SOURCE LINE # 200
; }
; SOURCE LINE # 201
LJMP ?C0001
; END OF main
;
; }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -