fangbojishu.lst

来自「AVR单片机C语言编程及应用实例 适合初学者的学习研究 其中包含Atmega」· LST 代码 · 共 270 行

LST
270
字号
__text_start:
__start:
      3B E5CF      LDI	R28,0x5F
      3C E0D4      LDI	R29,4
      3D BFCD      OUT	0x3D,R28
      3E BFDE      OUT	0x3E,R29
      3F 51C0      SUBI	R28,0x10
      40 40D0      SBCI	R29,0
      41 EA0A      LDI	R16,0xAA
      42 8308      STD	Y+0,R16
      43 2400      CLR	R0
      44 E6E1      LDI	R30,0x61
      45 E0F0      LDI	R31,0
      46 E010      LDI	R17,0
      47 36E1      CPI	R30,0x61
      48 07F1      CPC	R31,R17
      49 F011      BEQ	0x004C
      4A 9201      ST	R0,Z+
      4B CFFB      RJMP	0x0047
      4C 8300      STD	Z+0,R16
      4D E7E4      LDI	R30,0x74
      4E E0F0      LDI	R31,0
      4F E6A0      LDI	R26,0x60
      50 E0B0      LDI	R27,0
      51 E010      LDI	R17,0
      52 E000      LDI	R16,0
      53 BF0B      OUT	0x3B,R16
      54 37E5      CPI	R30,0x75
      55 07F1      CPC	R31,R17
      56 F021      BEQ	0x005B
      57 95C8      LPM
      58 9631      ADIW	R30,1
      59 920D      ST	R0,X+
      5A CFF9      RJMP	0x0054
      5B 940E 00B1 CALL	_main
_exit:
      5D CFFF      RJMP	_exit
_delay:
  i                    --> R20
  j                    --> R22
  ms                   --> R16
      5E 940E 00F8 CALL	push_xgsetF000
FILE: G:\学习\avr\天祥电子AVR视频教程\chengxu\fangbojishu\FANGBOJISHU.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:7
(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++)
      60 2744      CLR	R20
      61 2755      CLR	R21
      62 C00B      RJMP	0x006E
(0015) 	   {
(0016) 	   for(j=0;j<1141;j++);
      63 2766      CLR	R22
      64 2777      CLR	R23
      65 C002      RJMP	0x0068
      66 5F6F      SUBI	R22,0xFF
      67 4F7F      SBCI	R23,0xFF
      68 3765      CPI	R22,0x75
      69 E0E4      LDI	R30,4
      6A 077E      CPC	R23,R30
      6B F3D0      BCS	0x0066
      6C 5F4F      SUBI	R20,0xFF
      6D 4F5F      SBCI	R21,0xFF
      6E 1740      CP	R20,R16
      6F 0751      CPC	R21,R17
      70 F390      BCS	0x0063
      71 940C 00FD JMP	pop_xgsetF000
_show:
  k                    --> R10
  j                    --> R12
      73 92AA      ST	R10,-Y
      74 92CA      ST	R12,-Y
      75 2EA2      MOV	R10,R18
      76 2EC0      MOV	R12,R16
(0017)        }
(0018) }
(0019) void show(uchar j,uchar k)
(0020) {
(0021)         PORTA|=BIT(3);
      77 9ADB      SBI	0x1B,3
(0022) 	PORTB=table[j];
      78 E584      LDI	R24,0x54
      79 E090      LDI	R25,0
      7A 2DEC      MOV	R30,R12
      7B 27FF      CLR	R31
      7C 0FEE      LSL	R30
      7D 1FFF      ROL	R31
      7E 0FE8      ADD	R30,R24
      7F 1FF9      ADC	R31,R25
      80 9025      LPM	R2,Z+
      81 9034      LPM	R3,0(Z)
      82 BA28      OUT	0x18,R2
(0023) 	PORTA&=~BIT(3);
      83 98DB      CBI	0x1B,3
(0024) 	
(0025) 	PORTB=0XFF;
      84 EF8F      LDI	R24,0xFF
      85 BB88      OUT	0x18,R24
(0026) 	PORTB&=~BIT(k);
      86 E001      LDI	R16,1
      87 2D1A      MOV	R17,R10
      88 940E 0102 CALL	lsl8
      8A 2E20      MOV	R2,R16
      8B 9420      COM	R2
      8C B238      IN	R3,0x18
      8D 2032      AND	R3,R2
      8E BA38      OUT	0x18,R3
(0027) 	PORTA|=BIT(4);
      8F 9ADC      SBI	0x1B,4
(0028) 	PORTA&=~BIT(4);
      90 98DC      CBI	0x1B,4
(0029) 	delay(80);//delay(1);
      91 E500      LDI	R16,0x50
      92 E010      LDI	R17,0
      93 DFCA      RCALL	_delay
      94 90C9      LD	R12,Y+
      95 90A9      LD	R10,Y+
      96 9508      RET
_miao:
      97 922A      ST	R2,-Y
      98 938A      ST	R24,-Y
      99 939A      ST	R25,-Y
      9A B62F      IN	R2,0x3F
      9B 922A      ST	R2,-Y
(0030) }
(0031) void miao()
(0032) {
(0033)     if(num==60)
      9C 9180 0060 LDS	R24,num
      9E 338C      CPI	R24,0x3C
      9F F419      BNE	0x00A3
(0034) 	   num=0;
      A0 2422      CLR	R2
      A1 9220 0060 STS	num,R2
(0035) 	  num++;
      A3 9180 0060 LDS	R24,num
      A5 5F8F      SUBI	R24,0xFF
      A6 9380 0060 STS	num,R24
(0036) 	TCNT1H=0X00;
      A8 2422      CLR	R2
      A9 BC2D      OUT	0x2D,R2
(0037) 	TCNT1L=0X00;  
      AA BC2C      OUT	0x2C,R2
      AB 9029      LD	R2,Y+
      AC BE2F      OUT	0x3F,R2
      AD 9199      LD	R25,Y+
      AE 9189      LD	R24,Y+
      AF 9029      LD	R2,Y+
      B0 9518      RETI
(0038) }
(0039) void main()
(0040) {
(0041)     DDRB=0XFF;
_main:
      B1 EF8F      LDI	R24,0xFF
      B2 BB87      OUT	0x17,R24
(0042) 	DDRD|=0X30;
      B3 B381      IN	R24,0x11
      B4 6380      ORI	R24,0x30
      B5 BB81      OUT	0x11,R24
(0043) 	DDRA|=0X18;//573锁存端
      B6 B38A      IN	R24,0x1A
      B7 6188      ORI	R24,0x18
      B8 BB8A      OUT	0x1A,R24
(0044) 	TCCR1A=0X50;//T/C1控制寄存器A
      B9 E580      LDI	R24,0x50
      BA BD8F      OUT	0x2F,R24
(0045) 	TCCR1B=0X0A;//T/C1控制寄存器B
      BB E08A      LDI	R24,0xA
      BC BD8E      OUT	0x2E,R24
(0046) 	TCNT1=0;//计数寄存器
      BD 2422      CLR	R2
      BE 2433      CLR	R3
      BF BC3D      OUT	0x2D,R3
      C0 BC2C      OUT	0x2C,R2
(0047) 	OCR1A=999;//比较寄存器
      C1 EE87      LDI	R24,0xE7
      C2 E093      LDI	R25,3
      C3 BD9B      OUT	0x2B,R25
      C4 BD8A      OUT	0x2A,R24
(0048) 	TIMSK|=BIT(2);//T/C1中断屏蔽寄存器
      C5 B789      IN	R24,0x39
      C6 6084      ORI	R24,4
      C7 BF89      OUT	0x39,R24
(0049) 	TIFR|=BIT(4);//T/C中断标志寄存器
      C8 B788      IN	R24,0x38
      C9 6180      ORI	R24,0x10
      CA BF88      OUT	0x38,R24
(0050) 	TIFR|=BIT(3);//T/C中断标志寄存器
      CB B788      IN	R24,0x38
      CC 6088      ORI	R24,0x8
      CD BF88      OUT	0x38,R24
(0051) 	SREG|=BIT(7);//总中断
      CE 9478      BSET	7
      CF C00E      RJMP	0x00DE
(0052) 	
(0053) 	while(1)
(0054) 	{
(0055) 	    show(num/10,1);
      D0 E021      LDI	R18,1
      D1 E01A      LDI	R17,0xA
      D2 9100 0060 LDS	R16,num
      D4 940E 00E2 CALL	div8u
      D6 DF9C      RCALL	_show
(0056) 		show(num%10,0);
FILE: <library>
      D7 2722      CLR	R18
      D8 E01A      LDI	R17,0xA
      D9 9100 0060 LDS	R16,num
      DB 940E 00E0 CALL	mod8u
      DD DF95      RCALL	_show
      DE CFF1      RJMP	0x00D0
      DF 9508      RET
mod8u:
      E0 9468      BSET	6
      E1 C001      RJMP	xdiv8u
div8u:
      E2 94E8      BCLR	6
xdiv8u:
      E3 932A      ST	R18,-Y
      E4 92FA      ST	R15,-Y
      E5 92EA      ST	R14,-Y
      E6 24FF      CLR	R15
      E7 24EE      CLR	R14
      E8 E120      LDI	R18,0x10
      E9 0F00      LSL	R16
      EA 1CFF      ROL	R15
      EB 1CEE      ROL	R14
      EC 16E1      CP	R14,R17
      ED F010      BCS	0x00F0
      EE 1AE1      SUB	R14,R17
      EF 9503      INC	R16
      F0 952A      DEC	R18
      F1 F7B9      BNE	0x00E9
      F2 F40E      BRTC	0x00F4
      F3 2D0E      MOV	R16,R14
      F4 90E9      LD	R14,Y+
      F5 90F9      LD	R15,Y+
      F6 9129      LD	R18,Y+
      F7 9508      RET
push_xgsetF000:
      F8 937A      ST	R23,-Y
      F9 936A      ST	R22,-Y
      FA 935A      ST	R21,-Y
      FB 934A      ST	R20,-Y
      FC 9508      RET
pop_xgsetF000:
      FD 9149      LD	R20,Y+
      FE 9159      LD	R21,Y+
      FF 9169      LD	R22,Y+
     100 9179      LD	R23,Y+
     101 9508      RET
lsl8:
     102 2311      TST	R17
     103 F019      BEQ	0x0107
     104 0F00      LSL	R16
     105 951A      DEC	R17
     106 CFFB      RJMP	lsl8
     107 9508      RET

⌨️ 快捷键说明

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