📄 main.s
字号:
cpu LMM
.module main.c
.area data(ram, con, rel)
_NUM::
.byte 3,159
.byte 37,13
.byte 153,'I
.byte 'A,31
.byte 1,9
.byte 17,193
.byte 'c,133
.byte 'a,'q
.byte 255
.dbfile ./main.c
.dbsym e NUM _NUM A[17:17]c
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_weishu::
.word 1
.dbsym e weishu _weishu i
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_gewei::
.word 0
.dbsym e gewei _gewei i
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_shiwei::
.word 0
.dbsym e shiwei _shiwei i
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_baiwei::
.word 0
.dbsym e baiwei _baiwei i
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_qianwei::
.word 0
.dbsym e qianwei _qianwei i
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_count::
.word 0
.dbsym e count _count i
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_key::
.byte 0
.dbsym e key _key c
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_key1::
.byte 0
.dbsym e key1 _key1 c
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_key2::
.byte 0
.dbsym e key2 _key2 c
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_key3::
.byte 0
.dbsym e key3 _key3 c
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_key4::
.byte 0
.dbsym e key4 _key4 c
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_temp::
.byte 0
.dbsym e temp _temp c
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_times::
.byte 0
.dbsym e times _times c
.area data(ram, con, rel)
.dbfile ./main.c
.area data(ram, con, rel)
.dbfile ./main.c
_time::
.byte 0
.dbsym e time _time c
.area data(ram, con, rel)
.dbfile ./main.c
.area text(rom, con, rel)
.dbfile ./main.c
.dbfunc e Display _Display fV
_Display::
.dbline -1
.dbline 27
; //----------------------------------------------------------------------------
; // C main line
; //----------------------------------------------------------------------------
;
; #include <m8c.h> // part specific constants and macros
; #include "PSoCAPI.h" // PSoC API definitions for all User Modules
; #pragma interrupt_handler Timer8
; #pragma interrupt_handler Keyscan
; #pragma interrupt_handler Timer16
;
; #define LED1 0B11111110
; #define LED2 0B11111101
; #define LED3 0B11111011
; #define LED4 0B11110111
;
; #define SELECT PRT4DR
; #define DATA PRT3DR
;
; BYTE NUM[17] = {0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x11,0xc1,0x63,0x85,0x61,0x71,0xff};
;
; WORD weishu = 1 , gewei = 0 , shiwei = 0 , baiwei = 0 , qianwei = 0 , count = 0 ;
; BYTE key = 0 , key1 = 0 , key2 = 0 , key3 = 0 , key4 = 0 , temp = 0 ;
; BYTE times = 0 ;
; BYTE time = 0 ;
;
; void Display()
; {
.dbline 28
; switch( weishu )
mov REG[0xd0],>_weishu
cmp [_weishu],0
jnz X1
cmp [_weishu+1],1
jz L4
X1:
mov REG[0xd0],>_weishu
cmp [_weishu],0
jnz X2
cmp [_weishu+1],2
jz L7
X2:
mov REG[0xd0],>_weishu
cmp [_weishu],0
jnz X3
cmp [_weishu+1],3
jz L8
X3:
mov REG[0xd0],>_weishu
cmp [_weishu],0
jnz X4
cmp [_weishu+1],4
jz L9
X4:
xjmp L3
X0:
.dbline 29
; {
L4:
.dbline 31
; case 1 :
; if( (count/200) % 2 == 0 )
mov REG[0xd0],>_count
mov A,0
push A
mov A,-56
push A
mov A,[_count]
push A
mov A,[_count+1]
push A
mov REG[0xd0],>__r0
xcall __divmodu_16X16_16
pop A
mov [__r1],A
pop A
mov [__r0],A
add SP,-2
and [__r1],1
and [__r0],0
cmp [__r0],0
jnz L5
cmp [__r1],0
jnz L5
X5:
.dbline 32
; {
.dbline 33
; SELECT = LED4 ;
mov REG[0x10],-9
.dbline 34
; DATA = NUM[gewei] ;
mov REG[0xd0],>_gewei
mov A,[_gewei+1]
add A,<_NUM
mov REG[0xd0],>__r0
mov [__r1],A
mov REG[0xd0],>_gewei
mov A,[_gewei]
adc A,>_NUM
mov REG[0xd0],>__r0
mov REG[0xd4],A
mvi A,[__r1]
mov REG[0xc],A
.dbline 35
; break ;
xjmp L3
L5:
L7:
.dbline 38
; }
; case 2 :
; SELECT = LED3 ;
mov REG[0x10],-5
.dbline 39
; DATA = NUM[shiwei] ;
mov REG[0xd0],>_shiwei
mov A,[_shiwei+1]
add A,<_NUM
mov REG[0xd0],>__r0
mov [__r1],A
mov REG[0xd0],>_shiwei
mov A,[_shiwei]
adc A,>_NUM
mov REG[0xd0],>__r0
mov REG[0xd4],A
mvi A,[__r1]
mov REG[0xc],A
.dbline 40
; break ;
xjmp L3
L8:
.dbline 42
; case 3 :
; SELECT = LED2 ;
mov REG[0x10],-3
.dbline 43
; DATA = NUM[baiwei] & 0B11111110 ;
mov REG[0xd0],>_baiwei
mov A,[_baiwei+1]
add A,<_NUM
mov REG[0xd0],>__r0
mov [__r1],A
mov REG[0xd0],>_baiwei
mov A,[_baiwei]
adc A,>_NUM
mov REG[0xd0],>__r0
mov REG[0xd4],A
mvi A,[__r1]
mov [__r0],A
and [__r0],-2
mov A,[__r0]
mov REG[0xc],A
.dbline 44
; break ;
xjmp L3
L9:
.dbline 46
; case 4 :
; SELECT = LED1 ;
mov REG[0x10],-2
.dbline 47
; DATA = NUM[qianwei] ;
mov REG[0xd0],>_qianwei
mov A,[_qianwei+1]
add A,<_NUM
mov REG[0xd0],>__r0
mov [__r1],A
mov REG[0xd0],>_qianwei
mov A,[_qianwei]
adc A,>_NUM
mov REG[0xd0],>__r0
mov REG[0xd4],A
mvi A,[__r1]
mov REG[0xc],A
.dbline 48
; break ;
.dbline 50
; default :
; break ;
L3:
.dbline 52
mov REG[0xd0],>_weishu
inc [_weishu+1]
adc [_weishu],0
.dbline 53
cmp [_weishu],0
jnz L10
cmp [_weishu+1],5
jnz L10
X6:
.dbline 54
mov REG[0xd0],>_weishu
mov [_weishu+1],0
mov [_weishu],0
L10:
.dbline -2
.dbline 55
; }
; weishu ++ ;
; if( weishu == 5 )
; weishu = 0 ;
; }
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Display_Key _Display_Key fV
_Display_Key::
.dbline -1
.dbline 58
;
; void Display_Key()
; {
.dbline 59
; count ++ ;
mov REG[0xd0],>_count
inc [_count+1]
adc [_count],0
.dbline 60
; if( (count/200) % 2 == 0 && times != 0 )
mov A,0
push A
mov A,-56
push A
mov A,[_count]
push A
mov A,[_count+1]
push A
mov REG[0xd0],>__r0
xcall __divmodu_16X16_16
pop A
mov [__r1],A
pop A
mov [__r0],A
add SP,-2
and [__r1],1
and [__r0],0
cmp [__r0],0
jnz L13
cmp [__r1],0
jnz L13
X8:
mov REG[0xd0],>_times
cmp [_times],0
jz L13
.dbline 61
; {
.dbline 62
; switch( weishu )
mov REG[0xd0],>_weishu
cmp [_weishu],0
jnz X9
cmp [_weishu+1],1
jz L17
X9:
mov REG[0xd0],>_weishu
cmp [_weishu],0
jnz X10
cmp [_weishu+1],2
jz L18
X10:
mov REG[0xd0],>_weishu
cmp [_weishu],0
jnz X11
cmp [_weishu+1],3
jz L19
X11:
mov REG[0xd0],>_weishu
cmp [_weishu],0
jnz X12
cmp [_weishu+1],4
jz L20
X12:
xjmp L14
X7:
.dbline 63
; {
L17:
.dbline 65
; case 1 :
; SELECT = LED4 ;
mov REG[0x10],-9
.dbline 66
; DATA = NUM[key1] ;
mov REG[0xd0],>_key1
mov A,[_key1]
mov REG[0xd0],>__r0
mov [__r1],A
mov [__r0],0
add [__r1],<_NUM
adc [__r0],>_NUM
mov A,[__r0]
mov REG[0xd4],A
mvi A,[__r1]
mov REG[0xc],A
.dbline 67
; break ;
xjmp L14
L18:
.dbline 69
; case 2 :
; SELECT = LED3 ;
mov REG[0x10],-5
.dbline 70
; DATA = NUM[key2] ;
mov REG[0xd0],>_key2
mov A,[_key2]
mov REG[0xd0],>__r0
mov [__r1],A
mov [__r0],0
add [__r1],<_NUM
adc [__r0],>_NUM
mov A,[__r0]
mov REG[0xd4],A
mvi A,[__r1]
mov REG[0xc],A
.dbline 71
; break ;
xjmp L14
L19:
.dbline 73
; case 3 :
; SELECT = LED2 ;
mov REG[0x10],-3
.dbline 74
; DATA = NUM[key3] & 0B11111110 ;
mov REG[0xd0],>_key3
mov A,[_key3]
mov REG[0xd0],>__r0
mov [__r1],A
mov [__r0],0
add [__r1],<_NUM
adc [__r0],>_NUM
mov A,[__r0]
mov REG[0xd4],A
mvi A,[__r1]
mov [__r0],A
and [__r0],-2
mov A,[__r0]
mov REG[0xc],A
.dbline 75
; break ;
xjmp L14
L20:
.dbline 77
; case 4 :
; SELECT = LED1 ;
mov REG[0x10],-2
.dbline 78
; DATA = NUM[key4] ;
mov REG[0xd0],>_key4
mov A,[_key4]
mov REG[0xd0],>__r0
mov [__r1],A
mov [__r0],0
add [__r1],<_NUM
adc [__r0],>_NUM
mov A,[__r0]
mov REG[0xd4],A
mvi A,[__r1]
mov REG[0xc],A
.dbline 79
; break ;
.dbline 81
; default :
; break ;
.dbline 83
; }
; }
xjmp L14
L13:
.dbline 85
.dbline 86
mov REG[0xd0],>_key1
mov A,[_key1]
push A
mov REG[0xd0],>_qianwei
mov [_qianwei],0
pop A
mov [_qianwei+1],A
.dbline 87
mov REG[0xd0],>_key2
mov A,[_key2]
push A
mov REG[0xd0],>_baiwei
mov [_baiwei],0
pop A
mov [_baiwei+1],A
.dbline 88
mov REG[0xd0],>_key3
mov A,[_key3]
push A
mov REG[0xd0],>_shiwei
mov [_shiwei],0
pop A
mov [_shiwei+1],A
.dbline 89
mov REG[0xd0],>_key4
mov A,[_key4]
push A
mov REG[0xd0],>_gewei
mov [_gewei],0
pop A
mov [_gewei+1],A
.dbline 90
push X
xcall _Timer16_Stop
pop X
.dbline 91
mov REG[0xd0],>_count
mov [_count+1],0
mov [_count],0
.dbline 92
push X
xcall _Timer8_Start
pop X
.dbline 93
L14:
.dbline -2
.dbline 94
; else
; {
; qianwei = key1 ;
; baiwei = key2 ;
; shiwei = key3 ;
; gewei = key4 ;
; Timer16_Stop() ;
; count = 0 ;
; Timer8_Start() ;
; }
; }
L12:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Timer8 _Timer8 fV
_Timer8::
.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 97
;
; void Timer8()
; {
.dbline 98
; count ++ ;
mov REG[0xd0],>_count
inc [_count+1]
adc [_count],0
.dbline 99
; if( count == 24000 )
cmp [_count],93
jnz L22
cmp [_count+1],-64
jnz L22
X13:
.dbline 100
; {
.dbline 101
; gewei ++ ;
mov REG[0xd0],>_gewei
inc [_gewei+1]
adc [_gewei],0
.dbline 102
; if( gewei == 10 )
cmp [_gewei],0
jnz L24
cmp [_gewei+1],10
jnz L24
X14:
.dbline 103
; {
.dbline 104
; gewei = 0 ;
mov REG[0xd0],>_gewei
mov [_gewei+1],0
mov [_gewei],0
.dbline 105
; shiwei ++ ;
mov REG[0xd0],>_shiwei
inc [_shiwei+1]
adc [_shiwei],0
.dbline 106
; if( shiwei == 6 )
cmp [_shiwei],0
jnz L26
cmp [_shiwei+1],6
jnz L26
X15:
.dbline 107
; {
.dbline 108
; shiwei = 0 ;
mov REG[0xd0],>_shiwei
mov [_shiwei+1],0
mov [_shiwei],0
.dbline 110
;
; baiwei ++ ;
mov REG[0xd0],>_baiwei
inc [_baiwei+1]
adc [_baiwei],0
.dbline 111
; if( baiwei == 10 )
cmp [_baiwei],0
jnz L28
cmp [_baiwei+1],10
jnz L28
X16:
.dbline 112
; {
.dbline 113
; baiwei = 0 ;
mov REG[0xd0],>_baiwei
mov [_baiwei+1],0
mov [_baiwei],0
.dbline 114
; qianwei ++ ;
mov REG[0xd0],>_qianwei
inc [_qianwei+1]
adc [_qianwei],0
.dbline 115
; if( qianwei == 6 )
cmp [_qianwei],0
jnz L30
cmp [_qianwei+1],6
jnz L30
X17:
.dbline 116
; {
.dbline 117
; qianwei = 0 ;
mov REG[0xd0],>_qianwei
mov [_qianwei+1],0
mov [_qianwei],0
.dbline 118
; baiwei = 0 ;
mov REG[0xd0],>_baiwei
mov [_baiwei+1],0
mov [_baiwei],0
.dbline 119
; shiwei = 0 ;
mov REG[0xd0],>_shiwei
mov [_shiwei+1],0
mov [_shiwei],0
.dbline 120
; gewei = 0 ;
mov REG[0xd0],>_gewei
mov [_gewei+1],0
mov [_gewei],0
.dbline 121
; }
L30:
.dbline 122
; }
L28:
.dbline 123
; }
L26:
.dbline 124
; }
L24:
.dbline 125
; count = 0 ;
mov REG[0xd0],>_count
mov [_count+1],0
mov [_count],0
.dbline 126
; }
L22:
.dbline 127
; Display() ;
xcall _Display
.dbline -2
.dbline 128
; }
L21:
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -