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

📄 main.lst

📁 一个关于AVR单片机的例程
💻 LST
字号:
__start:
__text_start:
    003E E5CF      LDI	R28,0x5F
    003F E0D4      LDI	R29,4
    0040 BFCD      OUT	0x3D,R28
    0041 BFDE      OUT	0x3E,R29
    0042 51C0      SUBI	R28,0x10
    0043 40D0      SBCI	R29,0
    0044 EA0A      LDI	R16,0xAA
    0045 8308      STD	Y+0,R16
    0046 2400      CLR	R0
    0047 E6E0      LDI	R30,0x60
    0048 E0F0      LDI	R31,0
    0049 E010      LDI	R17,0
    004A 36E0      CPI	R30,0x60
    004B 07F1      CPC	R31,R17
    004C F011      BEQ	0x004F
    004D 9201      ST	R0,Z+
    004E CFFB      RJMP	0x004A
    004F 8300      STD	Z+0,R16
    0050 E7EC      LDI	R30,0x7C
    0051 E0F0      LDI	R31,0
    0052 E6A0      LDI	R26,0x60
    0053 E0B0      LDI	R27,0
    0054 E010      LDI	R17,0
    0055 37EC      CPI	R30,0x7C
    0056 07F1      CPC	R31,R17
    0057 F021      BEQ	0x005C
    0058 95C8      LPM
    0059 9631      ADIW	R30,1
    005A 920D      ST	R0,X+
    005B CFF9      RJMP	0x0055
    005C 940E0080  CALL	_main
_exit:
    005E CFFF      RJMP	_exit
FILE: C:\DOCUME~1\administrator\桌面\教程\LED应用\霓虹灯\main.c
(0001) //ICC-AVR application builder : 2007-1-29 10:04:38
(0002) // Target : M16
(0003) // Crystal: 7.3728Mhz
(0004) // 功能:霓虹灯程序
(0005) // 作者:古欣
(0006) // AVR与虚拟仪器 http://www.avrvi.com
(0007) 
(0008) #include <iom16v.h>
(0009) #include <macros.h>
(0010) 
(0011) #define led_port PORTA
(0012) //定义输出端口
(0013) #define led_ddr DDRA
(0014) //定义输出控制寄存器
(0015) //可以自行修改,必须保持 led_port和led_ddr一致,PORTA对应DDRA
(0016) 
(0017) const led_table[20]={   //定义要输出的值
(0018) 0xff,0x00,0x88,0x44,0x22,
(0019) 0x11,0x33,0x77,0xff,0x66,
(0020) 0x18,0x24,0x42,0x81,0xa5,
(0021) 0xe7,0xff,0x7e,0x3c,0x18};
(0022) 
(0023) 
(0024) void port_init(void)
(0025) {
(0026)  PORTA = 0x00;
_port_init:
    005F 2422      CLR	R2
    0060 BA2B      OUT	0x1B,R2
(0027)  DDRA  = 0x00;
    0061 BA2A      OUT	0x1A,R2
(0028)  PORTB = 0x00;
    0062 BA28      OUT	0x18,R2
(0029)  DDRB  = 0x00;
    0063 BA27      OUT	0x17,R2
(0030)  PORTC = 0x00; //m103 output only
    0064 BA25      OUT	0x15,R2
(0031)  DDRC  = 0x00;
    0065 BA24      OUT	0x14,R2
(0032)  PORTD = 0x00;
    0066 BA22      OUT	0x12,R2
(0033)  DDRD  = 0x00;
    0067 BA21      OUT	0x11,R2
(0034)  led_ddr=0xff; //设置LED的端口为输出
    0068 EF8F      LDI	R24,0xFF
    0069 BB8A      OUT	0x1A,R24
    006A 9508      RET
(0035) }
(0036) 
(0037) //call this routine to initialize all peripherals
(0038) //此处为ICC系统生成,未做更改
(0039) void init_devices(void)
(0040) {
(0041)  //stop errant interrupts until set up
(0042)  CLI(); //disable all interrupts
_init_devices:
    006B 94F8      BCLR	7
(0043)  port_init();
    006C DFF2      RCALL	_port_init
(0044) 
(0045)  MCUCR = 0x00;
    006D 2422      CLR	R2
    006E BE25      OUT	0x35,R2
(0046)  GICR  = 0x00;
    006F BE2B      OUT	0x3B,R2
(0047)  TIMSK = 0x00; //timer interrupt sources
    0070 BE29      OUT	0x39,R2
(0048)  SEI(); //re-enable interrupts
    0071 9478      BSET	7
    0072 9508      RET
(0049)  //all peripherals are now initialized
(0050) }
(0051) 
(0052) void Delay(void)  //延时,没有详细计算
(0053) {
(0054) unsigned char i,j;
(0055) for(i=150;i>0;i--)
_Delay:
  i                    --> R16
  j                    --> R18
    0073 E906      LDI	R16,0x96
    0074 C007      RJMP	0x007C
(0056) {
(0057)   for(j=200;j>0;j--)
    0075 EC28      LDI	R18,0xC8
    0076 C001      RJMP	0x0078
    0077 952A      DEC	R18
    0078 2422      CLR	R2
    0079 1622      CP	R2,R18
    007A F3E0      BCS	0x0077
    007B 950A      DEC	R16
    007C 2422      CLR	R2
    007D 1620      CP	R2,R16
    007E F3B0      BCS	0x0075
    007F 9508      RET
(0058) ;
(0059) }
(0060) }
(0061) 
(0062) void main(void)
(0063) {
(0064)  unsigned int i;
(0065)  init_devices();
_main:
  i                    --> R20
    0080 DFEA      RCALL	_init_devices
    0081 C01A      RJMP	0x009C
(0066)  while(1)
(0067)  {
(0068)  for(i=0;i<20;i++)
    0082 2744      CLR	R20
    0083 2755      CLR	R21
    0084 C013      RJMP	0x0098
(0069)    {
(0070)     led_port=led_table[i]; //顺序显示表中的内容
    0085 E002      LDI	R16,2
    0086 E010      LDI	R17,0
    0087 019A      MOVW	R18,R20
    0088 940E009E  CALL	empy16s
    008A 01F8      MOVW	R30,R16
    008B E584      LDI	R24,0x54
    008C E090      LDI	R25,0
    008D 0FE8      ADD	R30,R24
    008E 1FF9      ADC	R31,R25
    008F 9005      LPM	R0,Z+
    0090 9014      LPM	R1,0(Z)
    0091 01F0      MOVW	R30,R0
    0092 BBEB      OUT	0x1B,R30
(0071) 	Delay();               //延时
    0093 DFDF      RCALL	_Delay
(0072) 	Delay();               //延时
    0094 DFDE      RCALL	_Delay
(0073) 	Delay();               //延时
FILE: <library>
    0095 DFDD      RCALL	_Delay
    0096 5F4F      SUBI	R20,0xFF
    0097 4F5F      SBCI	R21,0xFF
    0098 3144      CPI	R20,0x14
    0099 E0E0      LDI	R30,0
    009A 075E      CPC	R21,R30
    009B F348      BCS	0x0085
    009C CFE5      RJMP	0x0082
    009D 9508      RET
empy16s:
    009E 920A      ST	R0,-Y
    009F 921A      ST	R1,-Y
    00A0 938A      ST	R24,-Y
    00A1 939A      ST	R25,-Y
    00A2 9F02      MUL	R16,R18
    00A3 01C0      MOVW	R24,R0
    00A4 9F12      MUL	R17,R18
    00A5 0D90      ADD	R25,R0
    00A6 9F03      MUL	R16,R19
    00A7 0D90      ADD	R25,R0
    00A8 018C      MOVW	R16,R24
    00A9 9199      LD	R25,Y+
    00AA 9189      LD	R24,Y+
    00AB 9019      LD	R1,Y+
    00AC 9009      LD	R0,Y+
    00AD 9508      RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -