📄 led.s
字号:
.module led.c
.area code(ram, con, rel)
.area lit(rom, con, rel)
_printtable::
.byte 63,6
.byte 91,'O
.byte 'f,'m
.byte 125,7
.byte 127,'g
.byte 'w,124
.byte 57,94
.byte 'y,'q
.byte 128
.dbfile C:\DOCUME~1\Administrator\桌面\car\led.c
.dbsym e printtable _printtable A[17:17]kc
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\car\led.c
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\car\led.c
.dbfunc e led_init _led_init fV
.even
_led_init::
.dbline -1
.dbline 17
; /*****************************************
; 名称: LED显示函数
; 入参:断位weizhi , 数据data
; 备注:A口0-A口5控制0位-5位
; B口输出数据内容
; ****************************************/
; #include <io8515v.h>
; #include <macros.h>
; #define WEIZHI PORTA
; #define DATA PORTB
;
; #pragma data:code
; const unsigned char printtable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
; 0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x71,0x80};
; #pragma data:data
; void led_init(void)
; {
.dbline 18
; WEIZHI|=0x3F;
in R24,0x1b
ori R24,63
out 0x1b,R24
.dbline 19
; DATA=0xFF;
ldi R24,255
out 0x18,R24
.dbline -2
.dbline 20
; }
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e led _led fV
; data -> R20
; weizhi -> R22,R23
.even
_led::
rcall push_gset2
mov R20,R18
mov R22,R16
mov R23,R17
.dbline -1
.dbline 22
; void led(int weizhi,char data)
; {
.dbline 23
; led_init();
rcall _led_init
.dbline 24
; switch(weizhi)
cpi R22,0
cpc R22,R23
breq L5
X0:
cpi R22,1
ldi R30,0
cpc R23,R30
breq L6
cpi R22,2
ldi R30,0
cpc R23,R30
breq L7
cpi R22,3
ldi R30,0
cpc R23,R30
breq L8
cpi R22,4
ldi R30,0
cpc R23,R30
breq L9
cpi R22,5
ldi R30,0
cpc R23,R30
breq L10
rjmp L4
X1:
.dbline 25
; {
L5:
.dbline 26
; case 0:WEIZHI &=0xFE;
in R24,0x1b
andi R24,254
out 0x1b,R24
.dbline 27
; break;
rjmp L4
L6:
.dbline 28
; case 1:WEIZHI &=0xFD;
in R24,0x1b
andi R24,253
out 0x1b,R24
.dbline 29
; break;
rjmp L4
L7:
.dbline 30
; case 2:WEIZHI &=0xFB;
in R24,0x1b
andi R24,251
out 0x1b,R24
.dbline 31
; break;
rjmp L4
L8:
.dbline 32
; case 3:WEIZHI &=0xF7;
in R24,0x1b
andi R24,247
out 0x1b,R24
.dbline 33
; break;
rjmp L4
L9:
.dbline 34
; case 4:WEIZHI &=0xEF;
in R24,0x1b
andi R24,239
out 0x1b,R24
.dbline 35
; break;
rjmp L4
L10:
.dbline 36
; case 5:WEIZHI &=0xDF;
in R24,0x1b
andi R24,223
out 0x1b,R24
.dbline 37
; break;
.dbline 38
; default: break;
L4:
.dbline 40
; }
; DATA =printtable[data];
ldi R24,<_printtable
ldi R25,>_printtable
mov R2,R20
clr R3
add R2,R24
adc R3,R25
mov R30,R2
mov R31,R3
lpm
out 0x18,R0
.dbline -2
.dbline 41
; }
L2:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r data 20 c
.dbsym r weizhi 22 I
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -