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

📄 icc.lst

📁 ATMEL AVR 单片机开发套件和大量C和ASM代码工程
💻 LST
字号:
__text_start:
__start:
    000D E5CF      LDI	R28,0x5F
    000E E0D2      LDI	R29,2
    000F BFCD      OUT	P3D,R28
    0010 BFDE      OUT	P3E,R29
    0011 51C0      SUBI	R28,0x10
    0012 40D0      SBCI	R29,0
    0013 EA0A      LDI	R16,0xAA
    0014 8308      STD	R16,0+Y
    0015 2400      CLR	R0
    0016 E6E0      LDI	R30,0x60
    0017 E0F0      LDI	R31,0
    0018 E010      LDI	R17,0
    0019 36E0      CPI	R30,0x60
    001A 07F1      CPC	R31,R17
    001B F011      BEQ	0x001E
    001C 9201      ST	R0,Z+
    001D CFFB      RJMP	0x0019
    001E 8300      STD	R16,0+Z
    001F E1EA      LDI	R30,0x1A
    0020 E0F0      LDI	R31,0
    0021 E6A0      LDI	R26,0x60
    0022 E0B0      LDI	R27,0
    0023 E010      LDI	R17,0
    0024 31EA      CPI	R30,0x1A
    0025 07F1      CPC	R31,R17
    0026 F021      BEQ	0x002B
    0027 95C8      LPM
    0028 9631      ADIW	R30,1
    0029 920D      ST	R0,X+
    002A CFF9      RJMP	0x0024
    002B D057      RCALL	_main
_exit:
    002C CFFF      RJMP	_exit
_receive_byte:
  i                    --> R20
  temp                 --> R22
    002D D12F      RCALL	push_gset2
FILE: D:\sl279\test\ICCAVR\icc.c
(0000) /************************************************************/
(0001) /*               广州天河双龙电子有限公司                   */
(0002) /*               http://www.sl.com.cn                       */
(0003) /*    SL279键盘与LED显示控制芯片演示程序(ICCAVR版本)      */
(0004) /*                程序作者:詹卫前                          */
(0005) /*接线方式:CS=PORTC.4 CLK=PORTC.3 DATA=PORTC.2 KEY=PORTC.1 */
(0006) /*       处理器:AT90S8515       晶振频率:8MHZ             */
(0007) /*       SL279 晶振频率:12MHZ    使用SLAVR库                */
(0008) /************************************************************/
(0009) #include<io8515.h>
(0010) #include<slavr.h>
(0011) /*         字节接收函数          */     
(0012) unsigned char receive_byte(void)
(0013)   {
(0014)    unsigned char i,temp=0;
    002E 2766      CLR	R22
(0015)    DDRC&=0xfb;              
    002F B384      IN	R24,P14
    0030 7F8B      ANDI	R24,0xFB
    0031 BB84      OUT	P14,R24
(0016)    delay_us(90);
    0032 E50A      LDI	R16,0x5A
    0033 E010      LDI	R17,0
    0034 D0F1      RCALL	_delay_us
(0017)    for(i=0;i<8;i++)
    0035 2744      CLR	R20
    0036 C00B      RJMP	0x0042
(0018)        {
(0019)         temp=temp<<1;  
    0037 0F66      LSL	R22
(0020)         PORTC|=0x08;//clk=1      
    0038 9AAB      SBI	P15,3
(0021)         delay_us(10);
    0039 E00A      LDI	R16,0xA
    003A E010      LDI	R17,0
    003B D0EA      RCALL	_delay_us
(0022)         if((PINC&0x04)!=0) 
    003C 9B9A      SBIS	P13,2
    003D C001      RJMP	0x003F
(0023)            temp|=0x01;   
    003E 6061      ORI	R22,1
(0024)         PORTC&=0xf7;//clk=0      
    003F D128      RCALL	<created procedures>
(0025)         delay_us(10);
    0040 D0E5      RCALL	_delay_us
(0026)        }
    0041 9543      INC	R20
    0042 3048      CPI	R20,0x8
    0043 F398      BCS	0x0037
(0027)    DDRC|=0x04;  
    0044 9AA2      SBI	P14,2
(0028)    return temp;
    0045 2F06      MOV	R16,R22
    0046 2711      CLR	R17
    0047 D118      RCALL	pop_gset2
    0048 9508      RET
_send_byte:
  i                    --> R20
  para                 --> R22
    0049 D113      RCALL	push_gset2
    004A 2F60      MOV	R22,R16
(0029)    }  
(0030) /*         字节发送函数            */
(0031) void send_byte(unsigned char para)
(0032)      {
(0033)       unsigned char i;
(0034)       PORTC&=0xef;//cs=0      
    004B B385      IN	R24,P15
    004C 7E8F      ANDI	R24,0xEF
    004D BB85      OUT	P15,R24
(0035)       delay_us(90);
    004E E50A      LDI	R16,0x5A
    004F E010      LDI	R17,0
    0050 D0D5      RCALL	_delay_us
(0036)       for(i=0;i<8;i++)
    0051 2744      CLR	R20
    0052 C011      RJMP	0x0064
(0037)          {
(0038)           if((para&0x80)==0x80)
    0053 2F86      MOV	R24,R22
    0054 7880      ANDI	R24,0x80
    0055 3880      CPI	R24,0x80
    0056 F411      BNE	0x0059
(0039)               PORTC|=0x04;//data=1   
    0057 9AAA      SBI	P15,2
    0058 C003      RJMP	0x005C
(0040)           else
(0041)               PORTC&=0xfb;//data=0   
    0059 B385      IN	R24,P15
    005A 7F8B      ANDI	R24,0xFB
    005B BB85      OUT	P15,R24
(0042)           PORTC|=0x08;//clk=1       
    005C 9AAB      SBI	P15,3
(0043)           delay_us(10);
    005D E00A      LDI	R16,0xA
    005E E010      LDI	R17,0
    005F D0C6      RCALL	_delay_us
    0060 D107      RCALL	<created procedures>
(0044)           PORTC&=0xf7;//clk=0       
(0045)           delay_us(10);
    0061 D0C4      RCALL	_delay_us
(0046)           para=para<<1;                
    0062 0F66      LSL	R22
(0047)          }	  	 
    0063 9543      INC	R20
    0064 3048      CPI	R20,0x8
    0065 F368      BCS	0x0053
(0048)      }
    0066 D0F9      RCALL	pop_gset2
    0067 9508      RET
_write279:
  cmd2                 --> R20
  cmd1                 --> R22
    0068 D0F4      RCALL	push_gset2
    0069 2F42      MOV	R20,R18
    006A 2F60      MOV	R22,R16
(0049) /*               写sl279双字节命令                */          
(0050) void write279(unsigned char cmd1, unsigned char cmd2)
(0051) {
(0052) 	send_byte (cmd1);
    006B 2F06      MOV	R16,R22
    006C DFDC      RCALL	_send_byte
(0053) 	send_byte (cmd2);                              
    006D 2F04      MOV	R16,R20
    006E DFDA      RCALL	_send_byte
(0054) 	PORTC|=0x10;
    006F 9AAC      SBI	P15,4
(0055) }
    0070 D0EF      RCALL	pop_gset2
    0071 9508      RET
_test1:
  cmd                  --> R20
    0072 D0D3      RCALL	push_gset1
    0073 2F40      MOV	R20,R16
(0056) void test1(unsigned char cmd)
(0057)      {
(0058)       send_byte(cmd);                     
    0074 2F04      MOV	R16,R20
    0075 DFD3      RCALL	_send_byte
(0059) 	  PORTC|=0x10;
    0076 9AAC      SBI	P15,4
(0060)       delay_ms(3000);                                                  
    0077 EB08      LDI	R16,0xB8
    0078 E01B      LDI	R17,0xB
    0079 D0BE      RCALL	_delay_ms
(0061)       }
    007A D0CE      RCALL	pop_gset1
    007B 9508      RET
(0062) /*           MCU初始化            */
(0063) void mcu_init(void)
(0064)     {
(0065)       MCUCR=0x00;
_mcu_init:
    007C 2422      CLR	R2
    007D BE25      OUT	P35,R2
(0066)       DDRC=0xfd;
    007E EF8D      LDI	R24,0xFD
    007F BB84      OUT	P14,R24
(0067)       PORTC=0xf3;
    0080 EF83      LDI	R24,0xF3
    0081 BB85      OUT	P15,R24
(0068)     }     
    0082 9508      RET
(0069) /*

⌨️ 快捷键说明

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