⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led点阵.lst

📁 AVR之ATMega16
💻 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 + -