📄 main.s
字号:
.module main.c
.area data(ram, con, rel)
_StartShow::
.blkb 1
.area idata
.byte 255
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.dbsym e StartShow _StartShow c
_cDataBuff::
.blkb 2
.area idata
.byte 1,3
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 1,0
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 0,6
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 5,1
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 3,9
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 8,10
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 10,8
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 7,8
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 0,7
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 2,2
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 6,10
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 10,6
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 1,2
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 6,4
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 2,1
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.blkb 2
.area idata
.byte 8,10
.area data(ram, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.dbsym e cDataBuff _cDataBuff A[32:32]c
.area text(rom, con, rel)
.dbfile G:\Mega8程序\TCXO评估板\LedShow\main.c
.dbfunc e main _main fV
; cNum -> R20
; p -> R22,R23
; cTemp -> R10
.even
_main::
.dbline -1
.dbline 18
; #include <iom8v.h>
; #include <macros.h>
; extern void led_init(void);
; extern void timer0_init(void);
; extern void TWI_init(void);
; extern unsigned char LedNum[8];
;
; unsigned char StartShow=0xff;
; void Delay(unsigned int ms);
; //#pragma data:eeprom
; char cDataBuff[]={1,3,1,0,0,6,5,1,
; 3,9,8,10,10,8,7,8,
; 0,7,2,2,6,10,10,6,
; 1,2,6,4,2,1,
; 8,10}; //10用来分隔两次显示(LED熄灭)
; //#pragma data:data
; void main(void)
; {
.dbline 22
; unsigned char cTemp;
; unsigned char cNum;
; unsigned char *p;
; led_init();
rcall _led_init
.dbline 23
; timer0_init();
rcall _timer0_init
.dbline 24
; TWI_init();
rcall _TWI_init
.dbline 25
; SEI();
sei
.dbline 26
; for(cNum=9;cNum!=0xff;cNum--)
ldi R20,9
rjmp L5
L2:
.dbline 27
.dbline 28
ldi R22,<_LedNum
ldi R23,>_LedNum
.dbline 29
movw R30,R22
st Z+,R20
.dbline 30
st Z+,R20
.dbline 31
st Z+,R20
.dbline 32
st Z+,R20
.dbline 33
st Z+,R20
.dbline 34
st Z+,R20
.dbline 35
st Z+,R20
movw R22,R30
.dbline 36
std z+0,R20
.dbline 37
ldi R16,200
ldi R17,0
rcall _Delay
.dbline 38
L3:
.dbline 26
dec R20
L5:
.dbline 26
cpi R20,255
brne L2
.dbline 39
; {
; p=LedNum;
; *p++=cNum;
; *p++=cNum;
; *p++=cNum;
; *p++=cNum;
; *p++=cNum;
; *p++=cNum;
; *p++=cNum;
; *p=cNum;
; Delay(200);
; }
; DDRC|=0b00001000;
sbi 0x14,3
.dbline 40
; PORTC&=0b11110111;//点亮指示灯
in R24,0x15
andi R24,247
out 0x15,R24
rjmp L7
L6:
.dbline 43
;
; while(1)
; {
.dbline 44
; p=LedNum;
ldi R22,<_LedNum
ldi R23,>_LedNum
.dbline 45
; for(cNum=7;cNum!=0xff;cNum--)//将LED的8位数码管全部熄灭-全部置为10
ldi R20,7
rjmp L12
L9:
.dbline 46
.dbline 47
ldi R24,10
movw R30,R22
st Z+,R24
movw R22,R30
.dbline 48
L10:
.dbline 45
dec R20
L12:
.dbline 45
cpi R20,255
brne L9
.dbline 49
; {
; *p++=10;
; }
; Delay(300);
ldi R16,300
ldi R17,1
rcall _Delay
.dbline 50
; StartShow=0x00;
clr R2
sts _StartShow,R2
.dbline 52
; /*For为Main程序中的主循环,如果没有要求StartShow,程序将不停循环*/
; for(cNum=0;StartShow!=0xff;cNum++)//将LED的8位数码管向前移位,最后位用数据缓冲区的数据补充进去
clr R20
rjmp L16
L13:
.dbline 53
.dbline 54
ldi R22,<_LedNum+7
ldi R23,>_LedNum+7
.dbline 55
movw R24,R22
sbiw R24,1
movw R30,R24
ldd R10,z+0
.dbline 56
sts _LedNum+7,R10
.dbline 57
sbiw R24,1
movw R30,R24
ldd R10,z+0
.dbline 58
sts _LedNum+6,R10
.dbline 59
sbiw R24,1
movw R30,R24
ldd R10,z+0
.dbline 60
sts _LedNum+5,R10
.dbline 61
sbiw R24,1
movw R30,R24
ldd R10,z+0
.dbline 62
sts _LedNum+4,R10
.dbline 63
sbiw R24,1
movw R30,R24
ldd R10,z+0
.dbline 64
sts _LedNum+3,R10
.dbline 65
sbiw R24,1
movw R30,R24
ldd R10,z+0
.dbline 66
sts _LedNum+2,R10
.dbline 67
sbiw R24,1
movw R22,R24
movw R30,R24
ldd R10,z+0
.dbline 68
sts _LedNum+1,R10
.dbline 70
andi R20,31
.dbline 71
ldi R24,<_cDataBuff
ldi R25,>_cDataBuff
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R10,z+0
.dbline 72
sts _LedNum,R10
.dbline 73
ldi R16,300
ldi R17,1
rcall _Delay
.dbline 74
L14:
.dbline 52
inc R20
L16:
.dbline 52
lds R24,_StartShow
cpi R24,255
breq X1
rjmp L13
X1:
.dbline 75
L7:
.dbline 42
rjmp L6
X0:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r cNum 20 c
.dbsym r p 22 pc
.dbsym r cTemp 10 c
.dbend
.dbfunc e Delay _Delay fV
; iTemp -> R20,R21
; iUs -> R22,R23
; ms -> R16,R17
.even
_Delay::
rcall push_gset2
.dbline -1
.dbline 78
; {
; p=&LedNum[7];
; cTemp=*(--p);
; LedNum[7]=cTemp;
; cTemp=*(--p);
; LedNum[6]=cTemp;
; cTemp=*(--p);
; LedNum[5]=cTemp;
; cTemp=*(--p);
; LedNum[4]=cTemp;
; cTemp=*(--p);
; LedNum[3]=cTemp;
; cTemp=*(--p);
; LedNum[2]=cTemp;
; cTemp=*(--p);
; LedNum[1]=cTemp;
;
; cNum&=0b00011111;//如果超过数据缓冲区,则恢复的起始地址
; cTemp=cDataBuff[cNum];
; LedNum[0]=cTemp;
; Delay(300);
; }
; }
; }
; void Delay(unsigned int ms)
; {
.dbline 81
; unsigned int iTemp;
; unsigned int iUs;
; for(iTemp=ms;iTemp>0;iTemp--)
movw R20,R16
rjmp L29
L26:
.dbline 82
; {
.dbline 83
ldi R22,1000
ldi R23,3
rjmp L33
L30:
.dbline 83
L31:
.dbline 83
subi R22,1
sbci R23,0
L33:
.dbline 83
cpi R22,0
cpc R22,R23
brne L30
X2:
.dbline 84
L27:
.dbline 81
subi R20,1
sbci R21,0
L29:
.dbline 81
cpi R20,0
cpc R20,R21
brne L26
X3:
.dbline -2
L25:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r iTemp 20 i
.dbsym r iUs 22 i
.dbsym r ms 16 i
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -