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

📄 led.lst

📁 mega使用人少
💻 LST
字号:
__text_start:
__start:
      2F E5CF      LDI	R28,0x5F
      30 E0D4      LDI	R29,4
      31 BFCD      OUT	0x3D,R28
      32 BFDE      OUT	0x3E,R29
      33 51C0      SUBI	R28,0x10
      34 40D0      SBCI	R29,0
      35 EA0A      LDI	R16,0xAA
      36 8308      STD	Y+0,R16
      37 2400      CLR	R0
      38 E6EA      LDI	R30,0x6A
      39 E0F0      LDI	R31,0
      3A E010      LDI	R17,0
      3B 36EA      CPI	R30,0x6A
      3C 07F1      CPC	R31,R17
      3D F011      BEQ	0x0040
      3E 9201      ST	R0,Z+
      3F CFFB      RJMP	0x003B
      40 8300      STD	Z+0,R16
      41 E5E4      LDI	R30,0x54
      42 E0F0      LDI	R31,0
      43 E6A0      LDI	R26,0x60
      44 E0B0      LDI	R27,0
      45 E010      LDI	R17,0
      46 E000      LDI	R16,0
      47 BF0B      OUT	0x3B,R16
      48 35EE      CPI	R30,0x5E
      49 07F1      CPC	R31,R17
      4A F021      BEQ	0x004F
      4B 95C8      LPM
      4C 9631      ADIW	R30,1
      4D 920D      ST	R0,X+
      4E CFF9      RJMP	0x0048
      4F D06E      RCALL	_main
      50 0000      NOP
_exit:
      51 CFFF      RJMP	_exit
FILE: D:\mega16_32实验板资料\ICCAVR源程序\164\led\delay.h
(0001) /**********延时函数*****************/
(0002) /*-----------------------------------------------
(0003) delay_us	   :1us延时函数
(0004) ------------------------------------------------*/
(0005) void delay_1us(void)
(0006) {
(0007)  asm("nop");
_delay_1us:
      52 0000      NOP
      53 9508      RET
_delay_us:
  t                    --> R20
      54 934A      ST	R20,-Y
      55 935A      ST	R21,-Y
      56 01A8      MOVW	R20,R16
(0008) }
(0009) /*-----------------------------------------------
(0010) delay_nus          :长延时函数
(0011) 输入参数: t        :延时时间 us
(0012) ------------------------------------------------*/
(0013) void delay_us(unsigned int t)
(0014) {
      57 C001      RJMP	0x0059
(0015)  while(t--)
(0016)   delay_1us();
      58 DFF9      RCALL	_delay_1us
      59 011A      MOVW	R2,R20
      5A 5041      SUBI	R20,1
      5B 4050      SBCI	R21,0
      5C 2022      TST	R2
      5D F7D1      BNE	0x0058
      5E 2033      TST	R3
      5F F7C1      BNE	0x0058
      60 9159      LD	R21,Y+
      61 9149      LD	R20,Y+
      62 9508      RET
(0017) }
(0018) /*----------------------------------------------
(0019) delay_ms	   :1ms延时函数
(0020) -----------------------------------------------*/
(0021) void delay_1ms(void)
(0022) {
(0023)  unsigned int i;
(0024)  for(i=0;i<1140;i++);
_delay_1ms:
  i                    --> R16
      63 2700      CLR	R16
      64 2711      CLR	R17
      65 C002      RJMP	0x0068
      66 5F0F      SUBI	R16,0xFF
      67 4F1F      SBCI	R17,0xFF
      68 3704      CPI	R16,0x74
      69 E0E4      LDI	R30,4
      6A 071E      CPC	R17,R30
      6B F3D0      BCS	0x0066
      6C 9508      RET
_delay_ms:
  t                    --> R20
      6D 934A      ST	R20,-Y
      6E 935A      ST	R21,-Y
      6F 01A8      MOVW	R20,R16
(0025) }
(0026) /*----------------------------------------------
(0027) delay_nms          :长延时函数
(0028) 输入参数: t        :延时时间 ms
(0029) -----------------------------------------------*/
(0030) void delay_ms(unsigned int t)
(0031) {
      70 C001      RJMP	0x0072
(0032)  while(t--)
(0033)   delay_1ms();
      71 DFF1      RCALL	_delay_1ms
      72 011A      MOVW	R2,R20
      73 5041      SUBI	R20,1
      74 4050      SBCI	R21,0
      75 2022      TST	R2
      76 F7D1      BNE	0x0071
      77 2033      TST	R3
      78 F7C1      BNE	0x0071
      79 9159      LD	R21,Y+
      7A 9149      LD	R20,Y+
      7B 9508      RET
FILE: D:\mega16_32实验板资料\ICCAVR源程序\164\led\164.h
(0001) //定义LS164管脚和led控制脚
(0002) #define DDR_CLK    DDRA
(0003) #define DDR_DATA   DDRA
(0004) #define DDR_CLEAR  DDRA
(0005) #define DDR_SEL    DDRC
(0006) #define PORT_CLK   PORTA
(0007) #define PORT_DATA  PORTA
(0008) #define PORT_CLEAR PORTA
(0009) #define PORT_SEL   PORTC
(0010) #define CLK PA2
(0011) #define DATA PA4
(0012) #define CLEAR PA3
(0013) #define SEL 0x3C
(0014) 
(0015) unsigned char Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
(0016) 
(0017) void Init_164()
(0018) {
(0019)  DDR_CLK|=(1<<CLK);      //164的时钟,数据,清零
_Init_164:
      7C 9AD2      SBI	0x1A,2
(0020)  DDR_DATA|=(1<<DATA);
      7D 9AD4      SBI	0x1A,4
(0021)  DDR_CLEAR|=(1<<CLEAR);
      7E 9AD3      SBI	0x1A,3
(0022)  DDR_SEL|=SEL;  //4位数码管选通端
      7F B384      IN	R24,0x14
      80 638C      ORI	R24,0x3C
      81 BB84      OUT	0x14,R24
(0023)  PORT_SEL|=SEL;
      82 B385      IN	R24,0x15
      83 638C      ORI	R24,0x3C
      84 BB85      OUT	0x15,R24
      85 9508      RET
(0024) }
(0025) 
(0026) void Clear_164()
(0027) {
(0028)  PORT_CLEAR|=(1<<CLEAR); 
_Clear_164:
      86 9ADB      SBI	0x1B,3
      87 9508      RET
_write_164:
  n                    --> R20
  i                    --> R16
      88 934A      ST	R20,-Y
(0029) }
(0030) 
(0031) void write_164(unsigned char i)
(0032) {
(0033)   char n;
(0034)   for(n=8;n>0;n--) 
      89 E048      LDI	R20,0x8
      8A C00B      RJMP	0x0096
(0035)   {
(0036)    if(i&0x80) PORT_DATA|=(1<<DATA);
      8B FF07      SBRS	R16,7
      8C C002      RJMP	0x008F
      8D 9ADC      SBI	0x1B,4
      8E C001      RJMP	0x0090
(0037)    else   PORT_DATA&=~(1<<DATA);
      8F 98DC      CBI	0x1B,4
(0038)    NOP();
      90 0000      NOP
(0039)    PORT_CLK|=(1<<CLK);
      91 9ADA      SBI	0x1B,2
(0040)    NOP();
      92 0000      NOP
(0041)    PORT_CLK&=~(1<<CLK);
      93 98DA      CBI	0x1B,2
(0042)    i=(i<<1);
      94 0F00      LSL	R16
      95 954A      DEC	R20
      96 E080      LDI	R24,0
      97 1784      CP	R24,R20
      98 F390      BCS	0x008B
      99 9149      LD	R20,Y+
      9A 9508      RET
_write_LED:
  sel                  --> R22
  i                    --> R20
  p                    --> R10
      9B D03B      RCALL	push_xgsetF00C
      9C 0000      NOP
      9D 0158      MOVW	R10,R16
(0043)   }   
(0044) }
(0045) void write_LED(unsigned char *p)
(0046) {
(0047)  unsigned char i,sel=0x04;
      9E E064      LDI	R22,4
(0048)   
(0049)  for(i=0;i<4;i++)
      9F 2744      CLR	R20
      A0 C019      RJMP	0x00BA
(0050)  {
(0051)   write_164(Table[p[i]]);
      A1 2FE4      MOV	R30,R20
      A2 27FF      CLR	R31
      A3 0DEA      ADD	R30,R10
      A4 1DFB      ADC	R31,R11
      A5 81E0      LDD	R30,Z+0
      A6 27FF      CLR	R31
      A7 E680      LDI	R24,0x60
      A8 E090      LDI	R25,0
      A9 0FE8      ADD	R30,R24
      AA 1FF9      ADC	R31,R25
      AB 8100      LDD	R16,Z+0
      AC DFDB      RCALL	_write_164
(0052)   PORT_SEL&=(~sel);
      AD 2E26      MOV	R2,R22
      AE 9420      COM	R2
      AF B235      IN	R3,0x15
      B0 2032      AND	R3,R2
      B1 BA35      OUT	0x15,R3
(0053)   delay_ms(2);
      B2 E002      LDI	R16,2
      B3 E010      LDI	R17,0
      B4 DFB8      RCALL	_delay_ms
(0054)   PORT_SEL|=SEL;
      B5 B385      IN	R24,0x15
      B6 638C      ORI	R24,0x3C
      B7 BB85      OUT	0x15,R24
(0055)   sel=sel<<1;
      B8 0F66      LSL	R22
      B9 9543      INC	R20
      BA 3044      CPI	R20,4
      BB F328      BCS	0x00A1
      BC C021      RJMP	pop_xgsetF00C
      BD 0000      NOP
FILE: D:\mega16_32实验板资料\ICCAVR源程序\164\led\led_test.c
(0001) //ICC-AVR application builder : 2008-11-11 16:14:49
(0002) // Target : M16
(0003) // Crystal: 8.0000Mhz
(0004) 
(0005) #include <iom16v.h>
(0006) #include <macros.h>
(0007) 
(0008) #include "delay.h"
(0009) #include "164.h"
(0010) 
(0011) void main(void)
(0012) {
(0013)  unsigned char i=0,j=0;
_main:
  i                    --> R20
  j                    --> R22
      BE 2744      CLR	R20
      BF 2766      CLR	R22
(0014)  delay_ms(20);
      C0 E104      LDI	R16,0x14
      C1 E010      LDI	R17,0
      C2 DFAA      RCALL	_delay_ms
(0015)  Init_164();
      C3 DFB8      RCALL	_Init_164
(0016)  Clear_164();
      C4 DFC1      RCALL	_Clear_164
(0017)  delay_ms(500);
      C5 EF04      LDI	R16,0xF4
      C6 E011      LDI	R17,1
      C7 DFA5      RCALL	_delay_ms
      C8 C00C      RJMP	0x00D5
(0018)  while(1)
(0019)  {
(0020)   j=0x01;
      C9 E061      LDI	R22,1
(0021)   for(i=0;i<8;i++)
      CA 2744      CLR	R20
      CB C007      RJMP	0x00D3
(0022)   {
(0023)    write_164(j);
      CC 2F06      MOV	R16,R22
      CD DFBA      RCALL	_write_164
(0024)    delay_ms(500);
      CE EF04      LDI	R16,0xF4
      CF E011      LDI	R17,1
      D0 DF9C      RCALL	_delay_ms
(0025)    j=j<<1;
FILE: <library>
      D1 0F66      LSL	R22
      D2 9543      INC	R20
      D3 3048      CPI	R20,0x8
      D4 F3B8      BCS	0x00CC
      D5 CFF3      RJMP	0x00C9
      D6 9508      RET
push_xgsetF00C:
      D7 937A      ST	R23,-Y
      D8 936A      ST	R22,-Y
      D9 935A      ST	R21,-Y
      DA 934A      ST	R20,-Y
      DB 92BA      ST	R11,-Y
      DC 92AA      ST	R10,-Y
      DD 9508      RET
pop_xgsetF00C:
      DE 90A9      LD	R10,Y+
      DF 90B9      LD	R11,Y+
      E0 9149      LD	R20,Y+
      E1 9159      LD	R21,Y+
      E2 9169      LD	R22,Y+
      E3 9179      LD	R23,Y+
      E4 9508      RET

⌨️ 快捷键说明

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