📄 key.s
字号:
.module key.c
.area lit(rom, con, rel)
_arab_1:
.byte 0,16
.byte 16,248
.byte 0,0
.byte 0,0
.byte 0,32
.byte 32,63
.byte 32,32
.byte 0,0
.dbfile D:\zhangyu\H2test\program/lcd.h
.dbsym s arab_1 _arab_1 A[16:16]kc
_arab_2:
.byte 0,'p
.byte 8,8
.byte 8,136
.byte 'p,0
.byte 0,48
.byte 40,36
.byte 34,33
.byte 48,0
.dbsym s arab_2 _arab_2 A[16:16]kc
_arab_3:
.byte 0,48
.byte 8,136
.byte 136,'H
.byte 48,0
.byte 0,24
.byte 32,32
.byte 32,17
.byte 14,0
.dbsym s arab_3 _arab_3 A[16:16]kc
_arab_4:
.byte 0,0
.byte 192,32
.byte 16,248
.byte 0,0
.byte 0,7
.byte 4,36
.byte 36,63
.byte 36,0
.dbsym s arab_4 _arab_4 A[16:16]kc
_arab_5:
.byte 0,248
.byte 8,136
.byte 136,8
.byte 8,0
.byte 0,25
.byte 33,32
.byte 32,17
.byte 14,0
.dbsym s arab_5 _arab_5 A[16:16]kc
_arab_6:
.byte 0,224
.byte 16,136
.byte 136,24
.byte 0,0
.byte 0,15
.byte 17,32
.byte 32,17
.byte 14,0
.dbsym s arab_6 _arab_6 A[16:16]kc
_arab_7:
.byte 0,56
.byte 8,8
.byte 200,56
.byte 8,0
.byte 0,0
.byte 0,63
.byte 0,0
.byte 0,0
.dbsym s arab_7 _arab_7 A[16:16]kc
_arab_8:
.byte 0,'p
.byte 136,8
.byte 8,136
.byte 'p,0
.byte 0,28
.byte 34,33
.byte 33,34
.byte 28,0
.dbsym s arab_8 _arab_8 A[16:16]kc
_arab_9:
.byte 0,224
.byte 16,8
.byte 8,16
.byte 224,0
.byte 0,0
.byte 49,34
.byte 34,17
.byte 15,0
.dbsym s arab_9 _arab_9 A[16:16]kc
_arab_0:
.byte 0,224
.byte 16,8
.byte 8,16
.byte 224,0
.byte 0,15
.byte 16,32
.byte 32,16
.byte 15,0
.dbsym s arab_0 _arab_0 A[16:16]kc
_T:
.byte 24,8
.byte 8,248
.byte 8,8
.byte 24,0
.byte 0,0
.byte 32,63
.byte 32,0
.byte 0,0
.dbsym s T _T A[16:16]kc
_t:
.byte 0,128
.byte 128,224
.byte 128,128
.byte 0,0
.byte 0,0
.byte 0,31
.byte 32,32
.byte 0,0
.dbsym s t _t A[16:16]kc
_maohao:
.byte 0,0
.byte 0,192
.byte 192,0
.byte 0,0
.byte 0,0
.byte 0,48
.byte 48,0
.byte 0,0
.dbsym s maohao _maohao A[16:16]kc
_xiaoshudian:
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,48
.byte 48,0
.byte 0,0
.byte 0,0
.dbsym s xiaoshudian _xiaoshudian A[16:16]kc
_E:
.byte 8,248
.byte 136,136
.byte 232,8
.byte 16,0
.byte 32,63
.byte 32,32
.byte 35,32
.byte 24,0
.dbsym s E _E A[16:16]kc
_l:
.byte 0,8
.byte 8,248
.byte 0,0
.byte 0,0
.byte 0,32
.byte 32,63
.byte 32,32
.byte 0,0
.dbsym s l _l A[16:16]kc
_g:
.byte 0,0
.byte 128,128
.byte 128,128
.byte 128,0
.byte 0,'k
.byte 148,148
.byte 148,147
.byte 96,0
.dbsym s g _g A[16:16]kc
_P:
.byte 8,248
.byte 8,8
.byte 8,8
.byte 240,0
.byte 32,63
.byte 33,1
.byte 1,1
.byte 0,0
.dbsym s P _P A[16:16]kc
_H:
.byte 0,126
.byte 16,126
.byte 0,'P
.byte 'p,64
.dbsym s H _H A[8:8]kc
_ll:
.byte 0,0
.byte 'B,126
.byte 'B,0
.byte 0,0
.dbsym s ll _ll A[8:8]kc
_lll:
.byte 0,0
.byte 'B,126
.byte 'B,126
.byte 'B,0
.dbsym s lll _lll A[8:8]kc
_zhenghao:
.byte 0,0
.byte 0,240
.byte 0,0
.byte 0,0
.byte 1,1
.byte 1,31
.byte 1,1
.byte 1,0
.dbsym s zhenghao _zhenghao A[16:16]kc
_fuhao:
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,1
.byte 1,1
.byte 1,1
.byte 1,1
.dbsym s fuhao _fuhao A[16:16]kc
.area text(rom, con, rel)
.dbfile D:\zhangyu\H2test\program/lcd.h
.dbfile D:\zhangyu\H2test\program\key.c
.dbfunc e inchour _inchour fV
.even
_inchour::
sbiw R28,1
.dbline -1
.dbline 31
; /************************************************************
; FileName: KEY.c
; Description: 键盘模块,实现时间的调整和参数的设置
; Function List:
; 1.inchour() //小时加1的子程序,在调整小时的状态下按下加1键调用到此程序
; 2.incmin() //分钟加1的子程序,在调整分钟的状态下按下加1按键调用到此程序
; 3.dechour() //小时减1的子程序,在调整小时的状态下按下减1按键调用到此程序
; 4.decmin() //分钟减1的子程序,在调整小时的状态下按下减1按键调用到此程序
; 5.canbi0() //参比的正负设置
; 6.incanbizhengshu() //参比的整数加1
; 7.incanbixiaoshu() //参比的小数加1
; 8.decanbizhengshu() //参比的整数减1
; 9.decanbixiaoshu() //参比的小数减1
; 10.getkey() //获取按键值
; 11.getkeylock() //锁定按键并获取按键值
; 12.checkkey() //键盘处理函数
; ***************************************************************/
; #include <iom16v.h>
; #include <macros.h>
; #include "key.h"
; #include "lcd.h"
; #include "1302.h"
; #include "6675.h"
; #include "main.h"
;
; extern unsigned char entercount,leftcount,rightcount;
; extern unsigned char position1302,hh,mm,positioncanbi,canbianjian;
; extern unsigned int time_array[6],canbi_array[5];
;
; void inchour(void) //小时加1的子程序,在调整小时的状态下按下加1键调用到此程序
; {
.dbline 32
; time_array[1]++;
lds R24,_time_array+2
lds R25,_time_array+2+1
adiw R24,1
sts _time_array+2+1,R25
sts _time_array+2,R24
.dbline 33
; if((time_array[0]==0x02)&&(time_array[1]==0x04))
lds R24,_time_array
lds R25,_time_array+1
cpi R24,2
ldi R30,0
cpc R25,R30
brne L3
lds R24,_time_array+2
lds R25,_time_array+2+1
cpi R24,4
ldi R30,0
cpc R25,R30
brne L3
.dbline 34
; {
.dbline 35
; time_array[1]=0x00;
clr R2
clr R3
sts _time_array+2+1,R3
sts _time_array+2,R2
.dbline 36
; time_array[0]=0x00;
sts _time_array+1,R3
sts _time_array,R2
.dbline 37
; }
L3:
.dbline 38
; if((time_array[0]!=0x02)&&(time_array[1]==0x0A))
lds R24,_time_array
lds R25,_time_array+1
cpi R24,2
ldi R30,0
cpc R25,R30
breq L7
lds R24,_time_array+2
lds R25,_time_array+2+1
cpi R24,10
ldi R30,0
cpc R25,R30
brne L7
.dbline 39
; {
.dbline 40
; time_array[0]++;
lds R24,_time_array
lds R25,_time_array+1
adiw R24,1
sts _time_array+1,R25
sts _time_array,R24
.dbline 41
; time_array[1]=0x00;
clr R2
clr R3
sts _time_array+2+1,R3
sts _time_array+2,R2
.dbline 42
; }
L7:
.dbline 43
; Draw_NtoArab(0x00,0x28,time_array[0]);
lds R2,_time_array
lds R3,_time_array+1
std y+0,R2
ldi R18,40
clr R16
xcall _Draw_NtoArab
.dbline 44
; Draw_NtoArab(0x00,0x30,time_array[1]);
lds R2,_time_array+2
lds R3,_time_array+2+1
std y+0,R2
ldi R18,48
clr R16
xcall _Draw_NtoArab
.dbline -2
L1:
adiw R28,1
.dbline 0 ; func end
ret
.dbend
.dbfunc e incmin _incmin fV
.even
_incmin::
sbiw R28,1
.dbline -1
.dbline 49
; }
;
;
; void incmin(void) //分钟加1的子程序,在调整分钟的状态下按下加1按键调用到此程序
; {
.dbline 50
; time_array[3]++;
lds R24,_time_array+6
lds R25,_time_array+6+1
adiw R24,1
sts _time_array+6+1,R25
sts _time_array+6,R24
.dbline 51
; if(time_array[3]==0x0A)
cpi R24,10
ldi R30,0
cpc R25,R30
brne L14
.dbline 52
; {
.dbline 53
; time_array[3]=0x00;
clr R2
clr R3
sts _time_array+6+1,R3
sts _time_array+6,R2
.dbline 54
; time_array[2]++;
lds R24,_time_array+4
lds R25,_time_array+4+1
adiw R24,1
sts _time_array+4+1,R25
sts _time_array+4,R24
.dbline 55
; if(time_array[2]==0x06)
cpi R24,6
ldi R30,0
cpc R25,R30
brne L19
.dbline 56
; time_array[2]=0x00;
sts _time_array+4+1,R3
sts _time_array+4,R2
L19:
.dbline 57
; }
L14:
.dbline 58
; Draw_NtoArab(0x00,0x40,time_array[2]);
lds R2,_time_array+4
lds R3,_time_array+4+1
std y+0,R2
ldi R18,64
clr R16
xcall _Draw_NtoArab
.dbline 59
; Draw_NtoArab(0x00,0x48,time_array[3]);
lds R2,_time_array+6
lds R3,_time_array+6+1
std y+0,R2
ldi R18,72
clr R16
xcall _Draw_NtoArab
.dbline -2
L12:
adiw R28,1
.dbline 0 ; func end
ret
.dbend
.dbfunc e dechour _dechour fV
.even
_dechour::
sbiw R28,1
.dbline -1
.dbline 63
; }
;
; void dechour(void) //小时减1的子程序,在调整小时的状态下按下减1按键调用到此程序
; {
.dbline 64
; time_array[1]--;
lds R24,_time_array+2
lds R25,_time_array+2+1
sbiw R24,1
sts _time_array+2+1,R25
sts _time_array+2,R24
.dbline 65
; if((time_array[0]==0x00)&&(time_array[1]==-1))
lds R2,_time_array
lds R3,_time_array+1
tst R2
brne L27
tst R3
brne L27
X0:
lds R24,_time_array+2
lds R25,_time_array+2+1
cpi R24,255
ldi R30,255
cpc R25,R30
brne L27
.dbline 66
; {
.dbline 67
; time_array[1]=0x03;
ldi R24,3
ldi R25,0
sts _time_array+2+1,R25
sts _time_array+2,R24
.dbline 68
; time_array[0]=0x02;
ldi R24,2
sts _time_array+1,R25
sts _time_array,R24
.dbline 69
; }
L27:
.dbline 70
; if((time_array[0]!=0x00)&&(time_array[1]==-1))
lds R2,_time_array
lds R3,_time_array+1
tst R2
brne X1
tst R3
breq L31
X1:
lds R24,_time_array+2
lds R25,_time_array+2+1
cpi R24,255
ldi R30,255
cpc R25,R30
brne L31
.dbline 71
; {
.dbline 72
; time_array[1]=0x09;
ldi R24,9
ldi R25,0
sts _time_array+2+1,R25
sts _time_array+2,R24
.dbline 73
; time_array[0]--;
lds R24,_time_array
lds R25,_time_array+1
sbiw R24,1
sts _time_array+1,R25
sts _time_array,R24
.dbline 74
; }
L31:
.dbline 75
; Draw_NtoArab(0x00,0x28,time_array[0]);
lds R2,_time_array
lds R3,_time_array+1
std y+0,R2
ldi R18,40
clr R16
xcall _Draw_NtoArab
.dbline 76
; Draw_NtoArab(0x00,0x30,time_array[1]);
lds R2,_time_array+2
lds R3,_time_array+2+1
std y+0,R2
ldi R18,48
clr R16
xcall _Draw_NtoArab
.dbline -2
L25:
adiw R28,1
.dbline 0 ; func end
ret
.dbend
.dbfunc e decmin _decmin fV
.even
_decmin::
sbiw R28,1
.dbline -1
.dbline 80
; }
;
; void decmin(void) //分钟减1的子程序,在调整小时的状态下按下减1按键调用到此程序
; {
.dbline 82
;
; time_array[3]--;
lds R24,_time_array+6
lds R25,_time_array+6+1
sbiw R24,1
sts _time_array+6+1,R25
sts _time_array+6,R24
.dbline 83
; if(time_array[3]==-1)
cpi R24,255
ldi R30,255
cpc R25,R30
brne L38
.dbline 84
; {
.dbline 85
; time_array[3]=0x09;
ldi R24,9
ldi R25,0
sts _time_array+6+1,R25
sts _time_array+6,R24
.dbline 86
; time_array[2]--;
lds R24,_time_array+4
lds R25,_time_array+4+1
sbiw R24,1
sts _time_array+4+1,R25
sts _time_array+4,R24
.dbline 87
; if(time_array[2]==-1)
cpi R24,255
ldi R30,255
cpc R25,R30
brne L43
.dbline 88
; time_array[2]=0x05;
ldi R24,5
ldi R25,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -