📄 main.lis
字号:
.module main.c
.area lit(rom, con, rel)
0000 _char_7::
0000 0000 .byte 0,0
0002 7C82 .byte 124,130
0004 827C .byte 130,124
0006 0000 .byte 0,0
0008 0000 .byte 0,0
000A 0084 .byte 0,132
000C FE80 .byte 254,128
000E 0000 .byte 0,0
0010 0000 .byte 0,0
0012 C4A2 .byte 196,162
0014 928C .byte 146,140
0016 0000 .byte 0,0
0018 0000 .byte 0,0
001A 4492 .byte 'D,146
001C 926C .byte 146,'l
001E 0000 .byte 0,0
0020 0000 .byte 0,0
0022 1814 .byte 24,20
0024 FE10 .byte 254,16
0026 0000 .byte 0,0
0028 0000 .byte 0,0
002A 9E94 .byte 158,148
002C 9464 .byte 148,'d
002E 0000 .byte 0,0
0030 0000 .byte 0,0
0032 7C92 .byte 124,146
0034 9264 .byte 146,'d
0036 0000 .byte 0,0
0038 0000 .byte 0,0
003A 02F2 .byte 2,242
003C 0A06 .byte 10,6
003E 0000 .byte 0,0
0040 0000 .byte 0,0
0042 6C92 .byte 'l,146
0044 926C .byte 146,'l
0046 0000 .byte 0,0
0048 0000 .byte 0,0
004A 4C92 .byte 'L,146
004C 927C .byte 146,124
004E 0000 .byte 0,0
0050 1038 .byte 16,56
0052 7CFE .byte 124,254
0054 3838 .byte 56,56
0056 3838 .byte 56,56
0058 .dbfile C:\DOCUME~1\administrator\桌面\教程\8x8led\main.c
0058 .dbsym e char_7 _char_7 A[88:11:8]kc
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\administrator\桌面\教程\8x8led\main.c
0000 .dbfunc e display _display fV
0000 ; row -> R20
0000 ; num -> R22
.even
0000 _display::
0000 0E940000 xcall push_gset2
0004 422F mov R20,R18
0006 602F mov R22,R16
0008 .dbline -1
0008 .dbline 25
0008 ;
0008 ; /*********************************************
0008 ; 显示向左的箭头
0008 ; Chip type : ATmega16
0008 ; *********************************************/
0008 ; #include <iom16v.h>
0008 ; #include "delay.h"
0008 ; const unsigned char char_7[][8]={
0008 ; {0x00,0x00,0x7c,0x82,0x82,0x7c,0x00,0x00},//0
0008 ; {0x00,0x00,0x00,0x84,0xfe,0x80,0x00,0x00},//1
0008 ; //{0x00,0x00,0xf2,0x92,0x92,0x9e,0x00,0x00},//正2
0008 ; {0x00,0x00,0xc4,0xa2,0x92,0x8c,0x00,0x00},//2
0008 ; {0x00,0x00,0x44,0x92,0x92,0x6c,0x00,0x00},//3
0008 ; //{0x00,0x00,0x92,0x92,0x92,0xfe,0x00,0x00},//正3
0008 ; {0x00,0x00,0x18,0x14,0xfe,0x10,0x00,0x00},//4
0008 ; {0x00,0x00,0x9e,0x94,0x94,0x64,0x00,0x00},//5
0008 ; {0x00,0x00,0x7c,0x92,0x92,0x64,0x00,0x00},//6
0008 ; {0x00,0x00,0x02,0xf2,0x0a,0x06,0x00,0x00},//7
0008 ; {0x00,0x00,0x6c,0x92,0x92,0x6c,0x00,0x00},//8
0008 ; {0x00,0x00,0x4c,0x92,0x92,0x7c,0x00,0x00},//9
0008 ; {0x10,0x38,0x7C,0xFE,0x38,0x38,0x38,0x38},//向左箭头
0008 ; };
0008 ;
0008 ; void display(unsigned char num,char row)
0008 ; {
0008 .dbline 26
0008 ; if(row>7)//容错处理
0008 87E0 ldi R24,7
000A 8417 cp R24,R20
000C 28F4 brsh L2
000E .dbline 27
000E ; {
000E .dbline 28
000E ; PORTA = 0XFF;
000E 8FEF ldi R24,255
0010 8BBB out 0x1b,R24
0012 .dbline 29
0012 ; PORTB = 0X81; //显示中间6排
0012 81E8 ldi R24,129
0014 88BB out 0x18,R24
0016 .dbline 30
0016 ; }
0016 1AC0 xjmp L3
0018 L2:
0018 .dbline 32
0018 .dbline 33
0018 88E0 ldi R24,8
001A 869F mul R24,R22
001C 1001 movw R2,R0
001E 80E0 ldi R24,<_char_7
0020 90E0 ldi R25,>_char_7
0022 280E add R2,R24
0024 391E adc R3,R25
0026 E42F mov R30,R20
0028 FF27 clr R31
002A E20D add R30,R2
002C F31D adc R31,R3
002E E491 lpm R30,Z
0030 EBBB out 0x1b,R30
0032 .dbline 34
0032 01E0 ldi R16,1
0034 142F mov R17,R20
0036 0E940000 xcall lsl8
003A 202E mov R2,R16
003C 2094 com R2
003E 28BA out 0x18,R2
0040 .dbline 35
0040 02E0 ldi R16,2
0042 10E0 ldi R17,0
0044 0E940000 xcall _delay_ms
0048 .dbline 36
0048 8FEF ldi R24,255
004A 88BB out 0x18,R24
004C .dbline 37
004C L3:
004C .dbline -2
004C L1:
004C 0E940000 xcall pop_gset2
0050 .dbline 0 ; func end
0050 0895 ret
0052 .dbsym r row 20 c
0052 .dbsym r num 22 c
0052 .dbend
0052 .dbfunc e main _main fV
0052 ; time_counter -> R20,R21
0052 ; number -> R22
0052 ; i -> R10
.even
0052 _main::
0052 .dbline -1
0052 .dbline 42
0052 ; else
0052 ; {
0052 ; PORTA = char_7[num][row];
0052 ; PORTB = ~(1<<row);
0052 ; delay_ms(2);
0052 ; PORTB = 0xFF;
0052 ; }
0052 ; }
0052 ;
0052 ;
0052 ; void main(void)
0052 ; {
0052 .dbline 43
0052 ; char number=0,i = 0;
0052 6627 clr R22
0054 .dbline 43
0054 AA24 clr R10
0056 .dbline 44
0056 ; int time_counter=0;
0056 4427 clr R20
0058 5527 clr R21
005A .dbline 45
005A ; PORTA=0xFF;
005A 8FEF ldi R24,255
005C 8BBB out 0x1b,R24
005E .dbline 46
005E ; DDRA=0xFF;
005E 8ABB out 0x1a,R24
0060 .dbline 47
0060 ; PORTB=0x00;
0060 2224 clr R2
0062 28BA out 0x18,R2
0064 .dbline 48
0064 ; DDRB=0xFF;
0064 87BB out 0x17,R24
0066 15C0 xjmp L6
0068 L5:
0068 .dbline 53
0068 ;
0068 ; //delay_1s(); //全亮一秒
0068 ;
0068 ; while (1)
0068 ; {
0068 .dbline 55
0068 ;
0068 ; for(i=0;i<8;i++)
0068 AA24 clr R10
006A 04C0 xjmp L11
006C L8:
006C .dbline 56
006C .dbline 57
006C 2A2D mov R18,R10
006E 062F mov R16,R22
0070 C7DF xcall _display
0072 .dbline 58
0072 L9:
0072 .dbline 55
0072 A394 inc R10
0074 L11:
0074 .dbline 55
0074 8A2D mov R24,R10
0076 8830 cpi R24,8
0078 C8F3 brlo L8
007A .dbline 60
007A ; {
007A ; display(number,i);
007A ; }
007A ;
007A ; time_counter++;
007A 4F5F subi R20,255 ; offset = 1
007C 5F4F sbci R21,255
007E .dbline 61
007E ; if(time_counter==100)
007E 4436 cpi R20,100
0080 E0E0 ldi R30,0
0082 5E07 cpc R21,R30
0084 31F4 brne L12
0086 .dbline 62
0086 ; {
0086 .dbline 63
0086 ; time_counter=0;
0086 4427 clr R20
0088 5527 clr R21
008A .dbline 64
008A ; number++;
008A 6395 inc R22
008C .dbline 65
008C ; if(number==11) number=0; //加到九返回零
008C 6B30 cpi R22,11
008E 09F4 brne L14
0090 .dbline 65
0090 6627 clr R22
0092 L14:
0092 .dbline 66
0092 ; }
0092 L12:
0092 .dbline 73
0092 L6:
0092 .dbline 52
0092 EACF xjmp L5
0094 X0:
0094 .dbline -2
0094 L4:
0094 .dbline 0 ; func end
0094 0895 ret
0096 .dbsym r time_counter 20 I
0096 .dbsym r number 22 c
0096 .dbsym r i 10 c
0096 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -