📄 main.s
字号:
.module main.c
.area lit(rom, con, rel)
_char_7::
.byte 0,0
.byte 124,130
.byte 130,124
.byte 0,0
.byte 0,0
.byte 0,132
.byte 254,128
.byte 0,0
.byte 0,0
.byte 196,162
.byte 146,140
.byte 0,0
.byte 0,0
.byte 'D,146
.byte 146,'l
.byte 0,0
.byte 0,0
.byte 24,20
.byte 254,16
.byte 0,0
.byte 0,0
.byte 158,148
.byte 148,'d
.byte 0,0
.byte 0,0
.byte 124,146
.byte 146,'d
.byte 0,0
.byte 0,0
.byte 2,242
.byte 10,6
.byte 0,0
.byte 0,0
.byte 'l,146
.byte 146,'l
.byte 0,0
.byte 0,0
.byte 'L,146
.byte 146,124
.byte 0,0
.byte 16,56
.byte 124,254
.byte 56,56
.byte 56,56
.dbfile C:\DOCUME~1\administrator\桌面\教程\8x8led\main.c
.dbsym e char_7 _char_7 A[88:11:8]kc
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\administrator\桌面\教程\8x8led\main.c
.dbfunc e display _display fV
; row -> R20
; num -> R22
.even
_display::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 25
;
; /*********************************************
; 显示向左的箭头
; Chip type : ATmega16
; *********************************************/
; #include <iom16v.h>
; #include "delay.h"
; const unsigned char char_7[][8]={
; {0x00,0x00,0x7c,0x82,0x82,0x7c,0x00,0x00},//0
; {0x00,0x00,0x00,0x84,0xfe,0x80,0x00,0x00},//1
; //{0x00,0x00,0xf2,0x92,0x92,0x9e,0x00,0x00},//正2
; {0x00,0x00,0xc4,0xa2,0x92,0x8c,0x00,0x00},//2
; {0x00,0x00,0x44,0x92,0x92,0x6c,0x00,0x00},//3
; //{0x00,0x00,0x92,0x92,0x92,0xfe,0x00,0x00},//正3
; {0x00,0x00,0x18,0x14,0xfe,0x10,0x00,0x00},//4
; {0x00,0x00,0x9e,0x94,0x94,0x64,0x00,0x00},//5
; {0x00,0x00,0x7c,0x92,0x92,0x64,0x00,0x00},//6
; {0x00,0x00,0x02,0xf2,0x0a,0x06,0x00,0x00},//7
; {0x00,0x00,0x6c,0x92,0x92,0x6c,0x00,0x00},//8
; {0x00,0x00,0x4c,0x92,0x92,0x7c,0x00,0x00},//9
; {0x10,0x38,0x7C,0xFE,0x38,0x38,0x38,0x38},//向左箭头
; };
;
; void display(unsigned char num,char row)
; {
.dbline 26
; if(row>7)//容错处理
ldi R24,7
cp R24,R20
brsh L2
.dbline 27
; {
.dbline 28
; PORTA = 0XFF;
ldi R24,255
out 0x1b,R24
.dbline 29
; PORTB = 0X81; //显示中间6排
ldi R24,129
out 0x18,R24
.dbline 30
; }
xjmp L3
L2:
.dbline 32
.dbline 33
ldi R24,8
mul R24,R22
movw R2,R0
ldi R24,<_char_7
ldi R25,>_char_7
add R2,R24
adc R3,R25
mov R30,R20
clr R31
add R30,R2
adc R31,R3
lpm R30,Z
out 0x1b,R30
.dbline 34
ldi R16,1
mov R17,R20
xcall lsl8
mov R2,R16
com R2
out 0x18,R2
.dbline 35
ldi R16,2
ldi R17,0
xcall _delay_ms
.dbline 36
ldi R24,255
out 0x18,R24
.dbline 37
L3:
.dbline -2
L1:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r row 20 c
.dbsym r num 22 c
.dbend
.dbfunc e main _main fV
; time_counter -> R20,R21
; number -> R22
; i -> R10
.even
_main::
.dbline -1
.dbline 42
; else
; {
; PORTA = char_7[num][row];
; PORTB = ~(1<<row);
; delay_ms(2);
; PORTB = 0xFF;
; }
; }
;
;
; void main(void)
; {
.dbline 43
; char number=0,i = 0;
clr R22
.dbline 43
clr R10
.dbline 44
; int time_counter=0;
clr R20
clr R21
.dbline 45
; PORTA=0xFF;
ldi R24,255
out 0x1b,R24
.dbline 46
; DDRA=0xFF;
out 0x1a,R24
.dbline 47
; PORTB=0x00;
clr R2
out 0x18,R2
.dbline 48
; DDRB=0xFF;
out 0x17,R24
xjmp L6
L5:
.dbline 53
;
; //delay_1s(); //全亮一秒
;
; while (1)
; {
.dbline 55
;
; for(i=0;i<8;i++)
clr R10
xjmp L11
L8:
.dbline 56
.dbline 57
mov R18,R10
mov R16,R22
xcall _display
.dbline 58
L9:
.dbline 55
inc R10
L11:
.dbline 55
mov R24,R10
cpi R24,8
brlo L8
.dbline 60
; {
; display(number,i);
; }
;
; time_counter++;
subi R20,255 ; offset = 1
sbci R21,255
.dbline 61
; if(time_counter==100)
cpi R20,100
ldi R30,0
cpc R21,R30
brne L12
.dbline 62
; {
.dbline 63
; time_counter=0;
clr R20
clr R21
.dbline 64
; number++;
inc R22
.dbline 65
; if(number==11) number=0; //加到九返回零
cpi R22,11
brne L14
.dbline 65
clr R22
L14:
.dbline 66
; }
L12:
.dbline 73
L6:
.dbline 52
xjmp L5
X0:
.dbline -2
L4:
.dbline 0 ; func end
ret
.dbsym r time_counter 20 I
.dbsym r number 22 c
.dbsym r i 10 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -