📄 led点阵.lst
字号:
__text_start:
__start:
003A E5CF LDI R28,0x5F
003B E0D4 LDI R29,4
003C BFCD OUT 0x3D,R28
003D BFDE OUT 0x3E,R29
003E 51C0 SUBI R28,0x10
003F 40D0 SBCI R29,0
0040 EA0A LDI R16,0xAA
0041 8308 STD Y+0,R16
0042 2400 CLR R0
0043 E8E0 LDI R30,0x80
0044 E0F0 LDI R31,0
0045 E010 LDI R17,0
0046 38E0 CPI R30,0x80
0047 07F1 CPC R31,R17
0048 F011 BEQ 0x004B
0049 9201 ST R0,Z+
004A CFFB RJMP 0x0046
004B 8300 STD Z+0,R16
004C E5E4 LDI R30,0x54
004D E0F0 LDI R31,0
004E E6A0 LDI R26,0x60
004F E0B0 LDI R27,0
0050 E010 LDI R17,0
0051 37E4 CPI R30,0x74
0052 07F1 CPC R31,R17
0053 F021 BEQ 0x0058
0054 95C8 LPM
0055 9631 ADIW R30,1
0056 920D ST R0,X+
0057 CFF9 RJMP 0x0051
0058 940E008D CALL _main
_exit:
005A CFFF RJMP _exit
FILE: G:\AVRMega16\LED点阵\delay.h
(0001) #define xtal 1 //1MS
(0002) /************************************************************
(0003) * 函数名称:void DelayUS(unsigned int time)
(0004) * 功 能:软件延时1.1Us
(0005) * 入口参数:time 延时时间
(0006) * 出口参数:无
(0007) ************************************************************/
(0008) void DelayUS(unsigned int time)
(0009) {
_DelayUS:
time --> R16
005B C002 RJMP 0x005E
(0010) while(time>1)
(0011) time--;
005C 5001 SUBI R16,1
005D 4010 SBCI R17,0
005E E081 LDI R24,1
005F E090 LDI R25,0
0060 1780 CP R24,R16
0061 0791 CPC R25,R17
0062 F3C8 BCS 0x005C
0063 9508 RET
_DelayMS:
i --> R20
time --> R16
0064 940E009B CALL push_gset1
(0012) }
(0013) /************************************************************
(0014) * 函数名称:void DelayMS(unsigned int time)
(0015) * 功 能:软件延时 1/1000s
(0016) * 入口参数:time 延时时间 MS
(0017) * 出口参数:无
(0018) ************************************************************/
(0019) void DelayMS (unsigned int time)
(0020) {
0066 C009 RJMP 0x0070
(0021) unsigned int i;
(0022) while(time--)
(0023) {
(0024) for(i=1;i<(unsigned int)(xtal*143-2);i++)
0067 E041 LDI R20,1
0068 E050 LDI R21,0
0069 C002 RJMP 0x006C
006A 5F4F SUBI R20,0xFF
006B 4F5F SBCI R21,0xFF
006C 384D CPI R20,0x8D
006D E0E0 LDI R30,0
006E 075E CPC R21,R30
006F F3D0 BCS 0x006A
0070 0118 MOVW R2,R16
0071 5001 SUBI R16,1
0072 4010 SBCI R17,0
0073 2022 TST R2
0074 F791 BNE 0x0067
0075 2033 TST R3
0076 F781 BNE 0x0067
0077 940E009E CALL pop_gset1
0079 9508 RET
FILE: G:\AVRMega16\LED点阵\LED点阵.c
(0001) //内部晶振 8M
(0002) //包含所需头文件
(0003) #include <ioM16v.h>
(0004) #include <macros.h>
(0005) #include"delay.h"
(0006)
(0007)
(0008)
(0009) /*------宏定义------*/
(0010) #define uchar unsigned char
(0011) #define uint unsigned int
(0012)
(0013) uchar dianzi[]={0xFF,0xC3,0xEB,0x81,0x6B,0x63,0x7F,0xFF,0xFF,0xEF,0xED,0x05,0xE9,0xED,0xEF,0xFF,
(0014) 0xFF,0xBF,0xBB,0x83,0xBB,0xBB,0xBD,0xFF,0xdb,0xc1,0x5B,0x9B,0xE1,0x6B,0x8B,0xFF};//汉字字模
(0015) //端口初始化
(0016) void port_init(void)
(0017) {
(0018) PORTA = 0xFF;//A口数据置0
_port_init:
007A EF8F LDI R24,0xFF
007B BB8B OUT 0x1B,R24
(0019) DDRA = 0xFF;//A口方向设为输出
007C BB8A OUT 0x1A,R24
(0020) PORTB = 0xFF;//B口数据置1
007D BB88 OUT 0x18,R24
(0021) DDRB = 0xFF;//B口方向设为输出
007E BB87 OUT 0x17,R24
(0022) PORTC = 0x00;
007F 2422 CLR R2
0080 BA25 OUT 0x15,R2
(0023) DDRC = 0x00;
0081 BA24 OUT 0x14,R2
(0024) PORTD = 0x00;
0082 BA22 OUT 0x12,R2
(0025) DDRD = 0x00;
0083 BA21 OUT 0x11,R2
0084 9508 RET
(0026) }
(0027)
(0028)
(0029) void init_devices(void)
(0030) {
(0031) CLI(); //禁止所有中断
_init_devices:
0085 94F8 BCLR 7
(0032) MCUCR = 0x00;//外部中断触发方式
0086 2422 CLR R2
0087 BE25 OUT 0x35,R2
(0033) MCUCSR = 0x80;//禁止JTAG
0088 E880 LDI R24,0x80
0089 BF84 OUT 0x34,R24
(0034) GICR = 0x00;//外部中断使能
008A BE2B OUT 0x3B,R2
(0035) port_init();
008B DFEE RCALL _port_init
008C 9508 RET
(0036) //SEI();//开全局中断
(0037) }
(0038) //主函数
(0039) void main(void)
(0040) {
(0041) uchar i,j,a=0;//定义变量
_main:
j --> Y+1
i --> Y+1
a --> R20
008D 2744 CLR R20
(0042) init_devices();//初始化
008E DFF6 RCALL _init_devices
(0043) PORTA=0xfe;
008F EF8E LDI R24,0xFE
0090 BB8B OUT 0x1B,R24
(0044) PORTB=0xfe;
FILE: <library>
0091 BB88 OUT 0x18,R24
0092 9508 RET
push_gset5:
0093 92FA ST R15,-Y
0094 92EA ST R14,-Y
push_gset4:
0095 92DA ST R13,-Y
0096 92CA ST R12,-Y
push_gset3:
0097 92BA ST R11,-Y
0098 92AA ST R10,-Y
push_gset2:
0099 937A ST R23,-Y
009A 936A ST R22,-Y
push_gset1:
009B 935A ST R21,-Y
009C 934A ST R20,-Y
009D 9508 RET
pop_gset1:
009E E0E1 LDI R30,1
pop:
009F 9149 LD R20,Y+
00A0 9159 LD R21,Y+
00A1 FDE0 SBRC R30,0
00A2 9508 RET
00A3 9169 LD R22,Y+
00A4 9179 LD R23,Y+
00A5 FDE1 SBRC R30,1
00A6 9508 RET
00A7 90A9 LD R10,Y+
00A8 90B9 LD R11,Y+
00A9 FDE2 SBRC R30,2
00AA 9508 RET
00AB 90C9 LD R12,Y+
00AC 90D9 LD R13,Y+
00AD FDE3 SBRC R30,3
00AE 9508 RET
00AF 90E9 LD R14,Y+
00B0 90F9 LD R15,Y+
00B1 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -