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

📄 lesson7.lst

📁 AVR单片机视频教程的课件和每一次课的源程序是学习AVR单片机的首选 第7节
💻 LST
字号:
__text_start:
__start:
    0041 E5CF      LDI	R28,0x5F
    0042 E0D4      LDI	R29,4
    0043 BFCD      OUT	P3D,R28
    0044 BFDE      OUT	P3E,R29
    0045 51C0      SUBI	R28,0x10
    0046 40D0      SBCI	R29,0
    0047 EA0A      LDI	R16,0xAA
    0048 8308      STD	R16,0+Y
    0049 2400      CLR	R0
    004A E6E1      LDI	R30,0x61
    004B E0F0      LDI	R31,0
    004C E010      LDI	R17,0
    004D 36E1      CPI	R30,0x61
    004E 07F1      CPC	R31,R17
    004F F011      BEQ	0x0052
    0050 9201      ST	R0,Z+
    0051 CFFB      RJMP	0x004D
    0052 8300      STD	R16,0+Z
    0053 E8E0      LDI	R30,0x80
    0054 E0F0      LDI	R31,0
    0055 E6A0      LDI	R26,0x60
    0056 E0B0      LDI	R27,0
    0057 E010      LDI	R17,0
    0058 38E1      CPI	R30,0x81
    0059 07F1      CPC	R31,R17
    005A F021      BEQ	0x005F
    005B 95C8      LPM
    005C 9631      ADIW	R30,1
    005D 920D      ST	R0,X+
    005E CFF9      RJMP	0x0058
    005F 940E00B7  CALL	_main
_exit:
    0061 CFFF      RJMP	_exit
_delay:
  i                    --> R20
  j                    --> R22
  ms                   --> R16
    0062 940E0102  CALL	push_gset2
FILE: I:\AVR视频教程\视频教程\lesson7\lesson7.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #define  uchar unsigned char
(0004) #define  uint  unsigned int
(0005) uchar num=0;
(0006) #pragma interrupt_handler miao:9
(0007) #pragma data:code 
(0008) const  table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
(0009) 		           0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
(0010) 
(0011) void delay(uint ms)
(0012) {
(0013)         uint i,j;
(0014) 	for(i=0;i<ms;i++)
    0064 2744      CLR	R20
    0065 2755      CLR	R21
    0066 C00B      RJMP	0x0072
(0015) 	   {
(0016) 	   for(j=0;j<1141;j++);
    0067 2766      CLR	R22
    0068 2777      CLR	R23
    0069 C002      RJMP	0x006C
    006A 5F6F      SUBI	R22,0xFF
    006B 4F7F      SBCI	R23,0xFF
    006C 3765      CPI	R22,0x75
    006D E0E4      LDI	R30,4
    006E 077E      CPC	R23,R30
    006F F3D0      BCS	0x006A
    0070 5F4F      SUBI	R20,0xFF
    0071 4F5F      SBCI	R21,0xFF
    0072 1740      CP	R20,R16
    0073 0751      CPC	R21,R17
    0074 F390      BCS	0x0067
(0017)        }
(0018) }
    0075 940E0106  CALL	pop_gset2
    0077 9508      RET
_show:
  k                    --> R20
  j                    --> R22
    0078 940E0102  CALL	push_gset2
    007A 2F42      MOV	R20,R18
    007B 2F60      MOV	R22,R16
(0019) void show(uchar j,uchar k)
(0020) {
(0021)         PORTA|=BIT(3);
    007C 9ADB      SBI	P1B,3
(0022) 	PORTB=table[j];
    007D E082      LDI	R24,2
    007E 9F86      MUL	R24,R22
    007F 01F0      MOVW	R30,R0
    0080 E680      LDI	R24,0x60
    0081 E090      LDI	R25,0
    0082 0FE8      ADD	R30,R24
    0083 1FF9      ADC	R31,R25
    0084 9005      LD	R0,R0
    0085 9014      LD	R1,R1
    0086 01F0      MOVW	R30,R0
    0087 BBE8      OUT	P18,R30
(0023) 	PORTA&=~BIT(3);
    0088 98DB      CBI	P1B,3
(0024) 	
(0025) 	PORTB=0XFF;
    0089 EF8F      LDI	R24,0xFF
    008A BB88      OUT	P18,R24
(0026) 	PORTB&=~BIT(k);
    008B E001      LDI	R16,1
    008C 2F14      MOV	R17,R20
    008D 940E0109  CALL	lsl8
    008F 2E20      MOV	R2,R16
    0090 9420      COM	R2
    0091 B238      IN	R3,P18
    0092 2032      AND	R3,R2
    0093 BA38      OUT	P18,R3
(0027) 	PORTA|=BIT(4);
    0094 9ADC      SBI	P1B,4
(0028) 	PORTA&=~BIT(4);
    0095 98DC      CBI	P1B,4
(0029) 	delay(1);
    0096 E001      LDI	R16,1
    0097 E010      LDI	R17,0
    0098 DFC9      RCALL	_delay
(0030) }
    0099 940E0106  CALL	pop_gset2
    009B 9508      RET
_miao:
    009C 922A      ST	R2,-Y
    009D 938A      ST	R24,-Y
    009E 939A      ST	R25,-Y
    009F B62F      IN	R2,P3F
    00A0 922A      ST	R2,-Y
(0031) void miao()
(0032) {
(0033)     if(num==60)
    00A1 91800060  LDS	R24,0x60
    00A3 338C      CPI	R24,0x3C
    00A4 F419      BNE	0x00A8
(0034) 	   num=0;
    00A5 2422      CLR	R2
    00A6 92200060  STS	R2,0x60
(0035) 	 num++;
    00A8 91800060  LDS	R24,0x60
    00AA 5F8F      SUBI	R24,0xFF
    00AB 93800060  STS	R24,0x60
(0036) 	TCNT1H=0X85;
    00AD E885      LDI	R24,0x85
    00AE BD8D      OUT	P2D,R24
(0037) 	TCNT1L=0XED;  
    00AF EE8D      LDI	R24,0xED
    00B0 BD8C      OUT	P2C,R24
(0038) }
    00B1 9029      LD	R2,Y+
    00B2 BE2F      OUT	P3F,R2
    00B3 9199      LD	R25,Y+
    00B4 9189      LD	R24,Y+
    00B5 9029      LD	R2,Y+
    00B6 9518      RETI
(0039) void main()
(0040) {
(0041)     DDRB=0XFF;
_main:
    00B7 EF8F      LDI	R24,0xFF
    00B8 BB87      OUT	P17,R24
(0042) 	DDRA|=0X18;
    00B9 B38A      IN	R24,P1A
    00BA 6188      ORI	R24,0x18
    00BB BB8A      OUT	P1A,R24
(0043) 	
(0044) 	TCCR1B=0X04;
    00BC E084      LDI	R24,4
    00BD BD8E      OUT	P2E,R24
(0045) 	TCNT1H=0X85;
    00BE E885      LDI	R24,0x85
    00BF BD8D      OUT	P2D,R24
(0046) 	TCNT1L=0XED;
    00C0 EE8D      LDI	R24,0xED
    00C1 BD8C      OUT	P2C,R24
(0047) 	TIMSK|=BIT(2);
    00C2 B789      IN	R24,P39
    00C3 6084      ORI	R24,4
    00C4 BF89      OUT	P39,R24
(0048) 	SREG|=BIT(7);
    00C5 9478      BSET	7
    00C6 C00E      RJMP	0x00D5
(0049) 	
(0050) 	while(1)
(0051) 	{
(0052) 	    show(num/10,0);
    00C7 2722      CLR	R18
    00C8 E01A      LDI	R17,0xA
    00C9 91000060  LDS	R16,0x60
    00CB 940E00D9  CALL	div8u
    00CD DFAA      RCALL	_show
(0053) 		show(num%10,1);
    00CE E021      LDI	R18,1
    00CF E01A      LDI	R17,0xA
    00D0 91000060  LDS	R16,0x60
    00D2 940E00D7  CALL	mod8u
    00D4 DFA3      RCALL	_show
    00D5 CFF1      RJMP	0x00C7
(0054) 	}
(0055) }FILE: <library>
    00D6 9508      RET
mod8u:
    00D7 9468      BSET	6
    00D8 C001      RJMP	xdiv8u
div8u:
    00D9 94E8      BCLR	6
xdiv8u:
    00DA 932A      ST	R18,-Y
    00DB 92FA      ST	R15,-Y
    00DC 24FF      CLR	R15
    00DD E028      LDI	R18,0x8
    00DE 0F00      LSL	R16
    00DF 1CFF      ROL	R15
    00E0 16F1      CP	R15,R17
    00E1 F010      BCS	0x00E4
    00E2 1AF1      SUB	R15,R17
    00E3 9503      INC	R16
    00E4 952A      DEC	R18
    00E5 F7C1      BNE	0x00DE
    00E6 F40E      BRTC	0x00E8
    00E7 2D0F      MOV	R16,R15
    00E8 90F9      LD	R15,Y+
    00E9 9129      LD	R18,Y+
    00EA 9508      RET
push_gset1:
    00EB 935A      ST	R21,-Y
    00EC 934A      ST	R20,-Y
    00ED 9508      RET
pop_gset1:
    00EE E0E1      LDI	R30,1
pop:
    00EF 9149      LD	R20,Y+
    00F0 9159      LD	R21,Y+
    00F1 FDE0      SBRC	R30,0
    00F2 9508      RET
    00F3 9169      LD	R22,Y+
    00F4 9179      LD	R23,Y+
    00F5 FDE1      SBRC	R30,1
    00F6 9508      RET
    00F7 90A9      LD	R10,Y+
    00F8 90B9      LD	R11,Y+
    00F9 FDE2      SBRC	R30,2
    00FA 9508      RET
    00FB 90C9      LD	R12,Y+
    00FC 90D9      LD	R13,Y+
    00FD FDE3      SBRC	R30,3
    00FE 9508      RET
    00FF 90E9      LD	R14,Y+
    0100 90F9      LD	R15,Y+
    0101 9508      RET
push_gset2:
    0102 937A      ST	R23,-Y
    0103 936A      ST	R22,-Y
    0104 940C00EB  JMP	push_gset1
pop_gset2:
    0106 E0E2      LDI	R30,2
    0107 940C00EF  JMP	pop
lsl8:
    0109 2311      TST	R17
    010A F019      BEQ	0x010E
    010B 0F00      LSL	R16
    010C 951A      DEC	R17
    010D CFFB      RJMP	lsl8
    010E 9508      RET

⌨️ 快捷键说明

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