📄 main.s
字号:
pop A
mov [__r6],A
pop A
mov [__r5],A
pop A
mov [__r4],A
pop A
mov [__r3],A
pop A
mov [__r2],A
pop A
mov [__r1],A
pop A
mov [__r0],A
pop A
mov REG[213],A
pop A
mov REG[212],A
pop A
mov REG[211],A
pop A
mov REG[208],A
pop A
.dbline 0 ; func end
reti
.dbend
.dbfunc e Timer16 _Timer16 fV
_Timer16::
.dbline -1
or F,-64
push A
mov A,REG[0xd0]
push A
mov A,REG[0xd3]
push A
mov A,REG[0xd4]
push A
mov A,REG[0xd5]
push A
mov REG[0xd0],>__r0
mov A,[__r0]
push A
mov A,[__r1]
push A
mov A,[__r2]
push A
mov A,[__r3]
push A
mov A,[__r4]
push A
mov A,[__r5]
push A
mov A,[__r6]
push A
mov A,[__r7]
push A
mov A,[__r8]
push A
mov A,[__r9]
push A
mov A,[__r10]
push A
mov A,[__r11]
push A
mov A,[__rX]
push A
mov A,[__rY]
push A
mov A,[__rZ]
push A
.dbline 131
.dbline 132
xcall _Display_Key
.dbline 133
mov REG[0xd0],>_times
mov [_times],5
mov REG[0xd0],>__r0
mov [__r0],5
cmp [__r0],0
jz L33
.dbline 134
mov REG[0xd0],>_times
mov [_times],0
L33:
.dbline -2
.dbline 136
;
; void Timer16()
; {
; Display_Key() ;
; if( times = 5 )
; times = 0 ;
;
; }
L32:
mov REG[0xD0],>__r0
pop A
mov [__rZ],A
pop A
mov [__rY],A
pop A
mov [__rX],A
pop A
mov [__r11],A
pop A
mov [__r10],A
pop A
mov [__r9],A
pop A
mov [__r8],A
pop A
mov [__r7],A
pop A
mov [__r6],A
pop A
mov [__r5],A
pop A
mov [__r4],A
pop A
mov [__r3],A
pop A
mov [__r2],A
pop A
mov [__r1],A
pop A
mov [__r0],A
pop A
mov REG[213],A
pop A
mov REG[212],A
pop A
mov REG[211],A
pop A
mov REG[208],A
pop A
.dbline 0 ; func end
reti
.dbend
.dbfunc e Keyscan _Keyscan fV
_Keyscan::
.dbline -1
or F,-64
push A
mov A,REG[0xd0]
push A
mov A,REG[0xd3]
push A
mov A,REG[0xd4]
push A
mov A,REG[0xd5]
push A
mov REG[0xd0],>__r0
mov A,[__r0]
push A
mov A,[__r1]
push A
mov A,[__r2]
push A
mov A,[__r3]
push A
mov A,[__r4]
push A
mov A,[__r5]
push A
mov A,[__r6]
push A
mov A,[__r7]
push A
mov A,[__r8]
push A
mov A,[__r9]
push A
mov A,[__r10]
push A
mov A,[__r11]
push A
mov A,[__rX]
push A
mov A,[__rY]
push A
mov A,[__rZ]
push A
push X
mov X,SP
add SP,2
.dbline 139
;
; void Keyscan()
; {
.dbline 140
; PRT5DR = 0b11111110 ;
mov REG[0x14],-2
.dbline 141
; temp = PRT5DR & 0xF0 ;
mov A,REG[0x14]
and A,-16
mov REG[0xd0],>_temp
mov [_temp],A
.dbline 142
; if( temp != 0xF0 )
cmp [_temp],-16
jz L36
.dbline 143
; {
.dbline 144
; switch(temp)
mov A,[_temp]
mov [X+1],A
mov [X+0],0
mov A,[X+1]
sub A,-80
mov REG[0xd0],>__r0
mov [__rY],A
mov A,[X+0]
xor A,-128
sbb A,(0 ^ 0x80)
or A,[__rY]
jz L43
jnc L46
X22:
L45:
cmp [X+0],0
jnz X23
cmp [X+1],112
jz L44
X23:
xjmp L38
L46:
mov A,[X+1]
sub A,-48
mov REG[0xd0],>__r0
mov [__rY],A
mov A,[X+0]
xor A,-128
sbb A,(0 ^ 0x80)
jc L38
or A,[__rY]
jz L42
X24:
L47:
cmp [X+0],0
jnz X25
cmp [X+1],-32
jz L41
X25:
xjmp L38
X18:
.dbline 145
; {
L41:
.dbline 147
; case 0b11100000 :
; key = 0 ; break ;
mov REG[0xd0],>_key
mov [_key],0
.dbline 147
xjmp L39
L42:
.dbline 149
; case 0b11010000 :
; key = 1 ; break ;
mov REG[0xd0],>_key
mov [_key],1
.dbline 149
xjmp L39
L43:
.dbline 151
; case 0b10110000 :
; key = 4 ; break ;
mov REG[0xd0],>_key
mov [_key],4
.dbline 151
xjmp L39
L44:
.dbline 153
; case 0b01110000 :
; key = 7 ; break ;
mov REG[0xd0],>_key
mov [_key],7
.dbline 153
L38:
L39:
.dbline 155
; }
; }
L36:
.dbline 157
;
; PRT5DR = 0b11111101 ;
mov REG[0x14],-3
.dbline 158
; temp = PRT5DR & 0xF0 ;
mov A,REG[0x14]
and A,-16
mov REG[0xd0],>_temp
mov [_temp],A
.dbline 159
; if( temp != 0xF0 )
cmp [_temp],-16
jz L48
.dbline 160
; {
.dbline 161
; switch(temp)
mov A,[_temp]
mov [X+1],A
mov [X+0],0
mov A,[X+1]
sub A,-80
mov REG[0xd0],>__r0
mov [__rY],A
mov A,[X+0]
xor A,-128
sbb A,(0 ^ 0x80)
or A,[__rY]
jz L55
jnc L58
X26:
L57:
cmp [X+0],0
jnz X27
cmp [X+1],112
jz L56
X27:
xjmp L50
L58:
mov A,[X+1]
sub A,-48
mov REG[0xd0],>__r0
mov [__rY],A
mov A,[X+0]
xor A,-128
sbb A,(0 ^ 0x80)
jc L50
or A,[__rY]
jz L54
X28:
L59:
cmp [X+0],0
jnz X29
cmp [X+1],-32
jz L53
X29:
xjmp L50
X19:
.dbline 162
; {
L53:
.dbline 164
; case 0b11100000 :
; key = 10 ; break ;
mov REG[0xd0],>_key
mov [_key],10
.dbline 164
xjmp L51
L54:
.dbline 166
; case 0b11010000 :
; key = 2 ; break ;
mov REG[0xd0],>_key
mov [_key],2
.dbline 166
xjmp L51
L55:
.dbline 168
; case 0b10110000 :
; key = 5 ; break ;
mov REG[0xd0],>_key
mov [_key],5
.dbline 168
xjmp L51
L56:
.dbline 170
; case 0b01110000 :
; key = 8 ; break ;
mov REG[0xd0],>_key
mov [_key],8
.dbline 170
L50:
L51:
.dbline 172
; }
; }
L48:
.dbline 174
;
; PRT5DR = 0b11111011 ;
mov REG[0x14],-5
.dbline 175
; temp = PRT5DR & 0xF0 ;
mov A,REG[0x14]
and A,-16
mov REG[0xd0],>_temp
mov [_temp],A
.dbline 176
; if( temp != 0xF0 )
cmp [_temp],-16
jz L60
.dbline 177
; {
.dbline 178
; switch(temp)
mov A,[_temp]
mov [X+1],A
mov [X+0],0
mov A,[X+1]
sub A,-80
mov REG[0xd0],>__r0
mov [__rY],A
mov A,[X+0]
xor A,-128
sbb A,(0 ^ 0x80)
or A,[__rY]
jz L67
jnc L70
X30:
L69:
cmp [X+0],0
jnz X31
cmp [X+1],112
jz L68
X31:
xjmp L62
L70:
mov A,[X+1]
sub A,-48
mov REG[0xd0],>__r0
mov [__rY],A
mov A,[X+0]
xor A,-128
sbb A,(0 ^ 0x80)
jc L62
or A,[__rY]
jz L66
X32:
L71:
cmp [X+0],0
jnz X33
cmp [X+1],-32
jz L65
X33:
xjmp L62
X20:
.dbline 179
; {
L65:
.dbline 181
; case 0b11100000 :
; key = 11 ; break ;
mov REG[0xd0],>_key
mov [_key],11
.dbline 181
xjmp L63
L66:
.dbline 183
; case 0b11010000 :
; key = 3 ; break ;
mov REG[0xd0],>_key
mov [_key],3
.dbline 183
xjmp L63
L67:
.dbline 185
; case 0b10110000 :
; key = 6 ; break ;
mov REG[0xd0],>_key
mov [_key],6
.dbline 185
xjmp L63
L68:
.dbline 187
; case 0b01110000 :
; key = 9 ; break ;
mov REG[0xd0],>_key
mov [_key],9
.dbline 187
L62:
L63:
.dbline 189
; }
; }
L60:
.dbline 191
;
; PRT5DR = 0xF0 ;
mov REG[0x14],-16
.dbline 193
;
; if( key = 10 )
mov REG[0xd0],>_key
mov [_key],10
mov REG[0xd0],>__r0
mov [__r0],10
cmp [__r0],0
jz L72
.dbline 194
; {
.dbline 195
; times ++ ;
mov REG[0xd0],>_times
inc [_times]
.dbline 196
; Timer8_Stop() ;
push X
xcall _Timer8_Stop
pop X
.dbline 197
; }
L72:
.dbline 199
;
; if( key = 11 )
mov REG[0xd0],>_key
mov [_key],11
mov REG[0xd0],>__r0
mov [__r0],11
cmp [__r0],0
jz L74
.dbline 200
; {
.dbline 201
; time = ~time ;
mov REG[0xd0],>_time
mov A,[_time]
cpl A
mov [_time],A
.dbline 202
; if( time )
cmp [_time],0
jz L76
.dbline 203
; {
.dbline 204
; Timer8_Stop() ;
push X
xcall _Timer8_Stop
pop X
xjmp L79
L78:
.dbline 206
.dbline 207
xcall _Display
.dbline 208
L79:
.dbline 205
; while(1)
xjmp L78
X21:
.dbline 209
; {
; Display();
; }
; }
xjmp L75
L76:
.dbline 211
; else
; Timer8_Start() ;
push X
xcall _Timer8_Start
pop X
.dbline 212
; }
xjmp L75
L74:
.dbline 213
; else if( key > 0 && key < 10 )
mov REG[0xd0],>_key
mov A,0
cmp A,[_key]
jnc L81
X34:
mov REG[0xd0],>_key
cmp [_key],10
jnc L81
X35:
.dbline 214
; {
.dbline 215
; times ++ ;
mov REG[0xd0],>_times
inc [_times]
.dbline 216
; if( times == 2 )
cmp [_times],2
jnz L83
.dbline 217
; key1 = key ;
mov REG[0xd0],>_key
mov A,[_key]
mov REG[0xd0],>_key1
mov [_key1],A
xjmp L84
L83:
.dbline 218
; else if( times == 3 )
mov REG[0xd0],>_times
cmp [_times],3
jnz L85
.dbline 219
; key2 = key ;
mov REG[0xd0],>_key
mov A,[_key]
mov REG[0xd0],>_key2
mov [_key2],A
xjmp L86
L85:
.dbline 220
; else if( times == 4 )
mov REG[0xd0],>_times
cmp [_times],4
jnz L87
.dbline 221
; key3 = key ;
mov REG[0xd0],>_key
mov A,[_key]
mov REG[0xd0],>_key3
mov [_key3],A
xjmp L88
L87:
.dbline 222
; else if( times == 5 )
mov REG[0xd0],>_times
cmp [_times],5
jnz L89
.dbline 223
; {
.dbline 224
; key4 = key ;
mov REG[0xd0],>_key
mov A,[_key]
mov REG[0xd0],>_key4
mov [_key4],A
.dbline 225
; key = 0 ;
mov REG[0xd0],>_key
mov [_key],0
.dbline 226
; }
L89:
L88:
L86:
L84:
.dbline 227
; }
L81:
L75:
.dbline 228
; count = 0 ;
mov REG[0xd0],>_count
mov [_count+1],0
mov [_count],0
.dbline 230
;
; Timer16_Start() ;
push X
xcall _Timer16_Start
pop X
.dbline 231
; weishu = 1 ;
mov REG[0xd0],>_weishu
mov [_weishu+1],1
mov [_weishu],0
.dbline -2
.dbline 232
; }
L35:
add SP,-2
pop X
mov REG[0xD0],>__r0
pop A
mov [__rZ],A
pop A
mov [__rY],A
pop A
mov [__rX],A
pop A
mov [__r11],A
pop A
mov [__r10],A
pop A
mov [__r9],A
pop A
mov [__r8],A
pop A
mov [__r7],A
pop A
mov [__r6],A
pop A
mov [__r5],A
pop A
mov [__r4],A
pop A
mov [__r3],A
pop A
mov [__r2],A
pop A
mov [__r1],A
pop A
mov [__r0],A
pop A
mov REG[213],A
pop A
mov REG[212],A
pop A
mov REG[211],A
pop A
mov REG[208],A
pop A
.dbline 0 ; func end
reti
.dbend
.dbfunc e main _main fV
_main::
.dbline -1
.dbline 235
;
; void main()
; {
.dbline 237
; // Insert your main routine code here.
; M8C_EnableGInt ;
or F, 01h
.dbline 238
; Timer8_EnableInt() ;
push X
xcall _Timer8_EnableInt
.dbline 239
; Timer16_EnableInt() ;
xcall _Timer16_EnableInt
.dbline 240
; Timer8_Start() ;
xcall _Timer8_Start
pop X
L92:
.dbline 242
.dbline 243
L93:
.dbline 241
xjmp L92
X36:
.dbline -2
.dbline 244
; while(1)
; {
; }
; }
L91:
.dbline 0 ; func end
jmp .
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -