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

📄 shuma.lst

📁 AVR单片机C语言编程及应用实例 适合初学者的学习研究 其中包含Atmega16中文资料及Protel部分电路图
💻 LST
字号:
__text_start:
__start:
    0040 E5CF      LDI	R28,0x5F
    0041 E0D4      LDI	R29,4
    0042 BFCD      OUT	P3D,R28
    0043 BFDE      OUT	P3E,R29
    0044 51C0      SUBI	R28,0x10
    0045 40D0      SBCI	R29,0
    0046 EA0A      LDI	R16,0xAA
    0047 8308      STD	R16,0+Y
    0048 2400      CLR	R0
    0049 E6E0      LDI	R30,0x60
    004A E0F0      LDI	R31,0
    004B E010      LDI	R17,0
    004C 36E0      CPI	R30,0x60
    004D 07F1      CPC	R31,R17
    004E F011      BEQ	0x0051
    004F 9201      ST	R0,Z+
    0050 CFFB      RJMP	0x004C
    0051 8300      STD	R16,0+Z
    0052 E8E0      LDI	R30,0x80
    0053 E0F0      LDI	R31,0
    0054 E6A0      LDI	R26,0x60
    0055 E0B0      LDI	R27,0
    0056 E010      LDI	R17,0
    0057 38E0      CPI	R30,0x80
    0058 07F1      CPC	R31,R17
    0059 F021      BEQ	0x005E
    005A 95C8      LPM
    005B 9631      ADIW	R30,1
    005C 920D      ST	R0,X+
    005D CFF9      RJMP	0x0057
    005E 940E009B  CALL	_main
_exit:
    0060 CFFF      RJMP	_exit
_delay:
  i                    --> R20
  j                    --> R22
  MS                   --> R16
    0061 940E0100  CALL	push_gset2
FILE: C:\icc\examples.avr\learn\shumaguan\shuma.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) 
(0004) #define uchar unsigned char
(0005) #define uint  unsigned int
(0006) #pragma data:code 
(0007) const table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
(0008) 		           0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
(0009) void delay(uint MS)		  
(0010) {
(0011)  uint i,j;
(0012)  for( i=0;i<MS;i++)
    0063 2744      CLR	R20
    0064 2755      CLR	R21
    0065 C00B      RJMP	0x0071
(0013)  for(j=0;j<1141;j++);	//1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
    0066 2766      CLR	R22
    0067 2777      CLR	R23
    0068 C002      RJMP	0x006B
    0069 5F6F      SUBI	R22,0xFF
    006A 4F7F      SBCI	R23,0xFF
    006B 3765      CPI	R22,0x75
    006C E0E4      LDI	R30,4
    006D 077E      CPC	R23,R30
    006E F3D0      BCS	0x0069
    006F 5F4F      SUBI	R20,0xFF
    0070 4F5F      SBCI	R21,0xFF
    0071 1740      CP	R20,R16
    0072 0751      CPC	R21,R17
    0073 F390      BCS	0x0066
(0014) }
    0074 940E0104  CALL	pop_gset2
    0076 9508      RET
_show:
  num                  --> R20
  data                 --> R22
    0077 940E0100  CALL	push_gset2
    0079 2F42      MOV	R20,R18
    007A 2F60      MOV	R22,R16
(0015) 
(0016) void show(uchar data,uchar num)
(0017) {
(0018)         PORTB=table[data];
    007B E082      LDI	R24,2
    007C 9F86      MUL	R24,R22
    007D 01F0      MOVW	R30,R0
    007E E680      LDI	R24,0x60
    007F E090      LDI	R25,0
    0080 0FE8      ADD	R30,R24
    0081 1FF9      ADC	R31,R25
    0082 9005      LD	R0,R0
    0083 9014      LD	R1,R1
    0084 01F0      MOVW	R30,R0
    0085 BBE8      OUT	P18,R30
(0019)      	PORTA|=BIT(3);//00001000
    0086 9ADB      SBI	P1B,3
(0020)      	PORTA&=~BIT(3);
    0087 98DB      CBI	P1B,3
(0021) 	
(0022) 	PORTB=0XFF;		 
    0088 EF8F      LDI	R24,0xFF
    0089 BB88      OUT	P18,R24
(0023)      	PORTB&=~BIT(num);//0XFE;
    008A E001      LDI	R16,1
    008B 2F14      MOV	R17,R20
    008C 940E0107  CALL	lsl8
    008E 2E20      MOV	R2,R16
    008F 9420      COM	R2
    0090 B238      IN	R3,P18
    0091 2032      AND	R3,R2
    0092 BA38      OUT	P18,R3
(0024)      	PORTA|=BIT(4);
    0093 9ADC      SBI	P1B,4
(0025)      	PORTA&=~BIT(4);
    0094 98DC      CBI	P1B,4
(0026) 	delay(1);
    0095 E001      LDI	R16,1
    0096 E010      LDI	R17,0
    0097 DFC9      RCALL	_delay
(0027) }
    0098 940E0104  CALL	pop_gset2
    009A 9508      RET
(0028) void main()
(0029) {
(0030)      uint i,j;
(0031)      DDRA=0XFF;
_main:
  j                    --> R20
  i                    --> R22
    009B EF8F      LDI	R24,0xFF
    009C BB8A      OUT	P1A,R24
(0032)      DDRB=0XFF;
    009D BB87      OUT	P17,R24
(0033)      PORTA|=BIT(6);
    009E 9ADE      SBI	P1B,6
    009F C02B      RJMP	0x00CB
(0034)      
(0035) /*     PORTB=0X3F;
(0036)      PORTA|=BIT(3);//00001000
(0037)      PORTA&=~BIT(3);
(0038)      
(0039)      PORTB=0XFE;
(0040)      PORTA|=BIT(4);
(0041)      PORTA&=~BIT(4);*/
(0042)      while(1)
(0043)      {
(0044)       for(j=0;j<600;j++)
    00A0 2744      CLR	R20
    00A1 2755      CLR	R21
    00A2 C024      RJMP	0x00C7
(0045)        {
(0046)         for(i=0;i<6;i++)
    00A3 2766      CLR	R22
    00A4 2777      CLR	R23
    00A5 C01B      RJMP	0x00C1
(0047)         {
(0048)  	  show((i+j/100)%6,i);     
    00A6 2F26      MOV	R18,R22
    00A7 E684      LDI	R24,0x64
    00A8 E090      LDI	R25,0
    00A9 932F      PUSH	R18
    00AA 933F      PUSH	R19
    00AB 019C      MOVW	R18,R24
    00AC 018A      MOVW	R16,R20
    00AD 940E00CF  CALL	div16u
    00AF 0118      MOVW	R2,R16
    00B0 913F      POP	R19
    00B1 912F      POP	R18
    00B2 018B      MOVW	R16,R22
    00B3 0D02      ADD	R16,R2
    00B4 1D13      ADC	R17,R3
    00B5 E086      LDI	R24,6
    00B6 E090      LDI	R25,0
    00B7 932F      PUSH	R18
    00B8 933F      PUSH	R19
    00B9 019C      MOVW	R18,R24
    00BA 940E00CD  CALL	mod16u
    00BC 913F      POP	R19
    00BD 912F      POP	R18
    00BE DFB8      RCALL	_show
    00BF 5F6F      SUBI	R22,0xFF
    00C0 4F7F      SBCI	R23,0xFF
    00C1 3066      CPI	R22,6
    00C2 E0E0      LDI	R30,0
    00C3 077E      CPC	R23,R30
    00C4 F308      BCS	0x00A6
    00C5 5F4F      SUBI	R20,0xFF
    00C6 4F5F      SBCI	R21,0xFF
    00C7 3548      CPI	R20,0x58
    00C8 E0E2      LDI	R30,2
    00C9 075E      CPC	R21,R30
    00CA F2C0      BCS	0x00A3
    00CB CFD4      RJMP	0x00A0
(0049)         }
(0050)        }
(0051)      }
(0052) 
(0053) }FILE: <library>
    00CC 9508      RET
mod16u:
    00CD 9468      BSET	6
    00CE C001      RJMP	xdiv16u
div16u:
    00CF 94E8      BCLR	6
xdiv16u:
    00D0 92EA      ST	R14,-Y
    00D1 92FA      ST	R15,-Y
    00D2 938A      ST	R24,-Y
    00D3 24EE      CLR	R14
    00D4 24FF      CLR	R15
    00D5 E180      LDI	R24,0x10
    00D6 0F00      LSL	R16
    00D7 1F11      ROL	R17
    00D8 1CEE      ROL	R14
    00D9 1CFF      ROL	R15
    00DA 16E2      CP	R14,R18
    00DB 06F3      CPC	R15,R19
    00DC F018      BCS	0x00E0
    00DD 1AE2      SUB	R14,R18
    00DE 0AF3      SBC	R15,R19
    00DF 9503      INC	R16
    00E0 958A      DEC	R24
    00E1 F7A1      BNE	0x00D6
    00E2 F416      BRTC	0x00E5
    00E3 2D0E      MOV	R16,R14
    00E4 2D1F      MOV	R17,R15
    00E5 9189      LD	R24,Y+
    00E6 90F9      LD	R15,Y+
    00E7 90E9      LD	R14,Y+
    00E8 9508      RET
push_gset1:
    00E9 935A      ST	R21,-Y
    00EA 934A      ST	R20,-Y
    00EB 9508      RET
pop_gset1:
    00EC E0E1      LDI	R30,1
pop:
    00ED 9149      LD	R20,Y+
    00EE 9159      LD	R21,Y+
    00EF FDE0      SBRC	R30,0
    00F0 9508      RET
    00F1 9169      LD	R22,Y+
    00F2 9179      LD	R23,Y+
    00F3 FDE1      SBRC	R30,1
    00F4 9508      RET
    00F5 90A9      LD	R10,Y+
    00F6 90B9      LD	R11,Y+
    00F7 FDE2      SBRC	R30,2
    00F8 9508      RET
    00F9 90C9      LD	R12,Y+
    00FA 90D9      LD	R13,Y+
    00FB FDE3      SBRC	R30,3
    00FC 9508      RET
    00FD 90E9      LD	R14,Y+
    00FE 90F9      LD	R15,Y+
    00FF 9508      RET
push_gset2:
    0100 937A      ST	R23,-Y
    0101 936A      ST	R22,-Y
    0102 940C00E9  JMP	push_gset1
pop_gset2:
    0104 E0E2      LDI	R30,2
    0105 940C00ED  JMP	pop
lsl8:
    0107 2311      TST	R17
    0108 F019      BEQ	0x010C
    0109 0F00      LSL	R16
    010A 951A      DEC	R17
    010B CFFB      RJMP	lsl8
    010C 9508      RET

⌨️ 快捷键说明

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