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

📄 icc.lis

📁 ATMEL AVR 单片机开发套件和大量C和ASM代码工程
💻 LIS
字号:
                         .module icc.c
                         .area text(rom, con, rel)
 0000                   .dbfile D:\sl279\test\ICCAVR\icc.c
 0000                   .dbfunc s receive_byte _receive_byte fI
                       ;              i -> R20
                       ;           temp -> R22
                         .even
 0000                 _receive_byte::
 0000 00D0              rcall push_gset2
 0002                   .dbline -1
 0002                   .dbline 14
                       ; /************************************************************/
                       ; /*               广州天河双龙电子有限公司                   */
                       ; /*               http://www.sl.com.cn                       */
                       ; /*    SL279键盘与LED显示控制芯片演示程序(ICCAVR版本)      */
                       ; /*                程序作者:詹卫前                          */
                       ; /*接线方式:CS=PORTC.4 CLK=PORTC.3 DATA=PORTC.2 KEY=PORTC.1 */
                       ; /*       处理器:AT90S8515       晶振频率:8MHZ             */
                       ; /*       SL279 晶振频率:12MHZ    使用SLAVR库                */
                       ; /************************************************************/
                       ; #include<io8515.h>
                       ; #include<slavr.h>
                       ; /*         字节接收函数          */     
                       ; unsigned char receive_byte(void)
                       ;   {
 0002                   .dbline 15
                       ;    unsigned char i,temp=0;
 0002 6627              clr R22
 0004                   .dbline 16
                       ;    DDRC&=0xfb;              
 0004 84B3              in R24,0x14
 0006 8B7F              andi R24,251
 0008 84BB              out 0x14,R24
 000A                   .dbline 17
                       ;    delay_us(90);
 000A 0AE5              ldi R16,90
 000C 10E0              ldi R17,0
 000E 00D0              rcall _delay_us
 0010                   .dbline 18
                       ;    for(i=0;i<8;i++)
 0010 4427              clr R20
 0012 0FC0              rjmp L5
 0014                 L2:
 0014                   .dbline 19
                       ;        {
 0014                   .dbline 20
                       ;         temp=temp<<1;  
 0014 660F              lsl R22
 0016                   .dbline 21
                       ;         PORTC|=0x08;//clk=1      
 0016 AB9A              sbi 0x15,3
 0018                   .dbline 22
                       ;         delay_us(10);
 0018 0AE0              ldi R16,10
 001A 10E0              ldi R17,0
 001C 00D0              rcall _delay_us
 001E                   .dbline 23
                       ;         if((PINC&0x04)!=0) 
 001E 9A9B              sbis 0x13,2
 0020 01C0              rjmp L6
 0022                   .dbline 24
                       ;            temp|=0x01;   
 0022 6160              ori R22,1
 0024                 L6:
 0024                   .dbline 25
 0024 85B3              in R24,0x15
 0026 877F              andi R24,247
 0028 85BB              out 0x15,R24
 002A                   .dbline 26
 002A 0AE0              ldi R16,10
 002C 10E0              ldi R17,0
 002E 00D0              rcall _delay_us
 0030                   .dbline 27
 0030                 L3:
 0030                   .dbline 18
 0030 4395              inc R20
 0032                 L5:
 0032                   .dbline 18
 0032 4830              cpi R20,8
 0034 78F3              brlo L2
 0036                   .dbline 28
                       ;         PORTC&=0xf7;//clk=0      
                       ;         delay_us(10);
                       ;        }
                       ;    DDRC|=0x04;  
 0036 A29A              sbi 0x14,2
 0038                   .dbline 29
                       ;    return temp;
 0038 062F              mov R16,R22
 003A 1127              clr R17
 003C                   .dbline -2
 003C                 L1:
 003C 00D0              rcall pop_gset2
 003E                   .dbline 0 ; func end
 003E 0895              ret
 0040                   .dbsym r i 20 c
 0040                   .dbsym r temp 22 c
 0040                   .dbfunc s send_byte _send_byte fI
                       ;              i -> R20
                       ;           para -> R22
                         .even
 0040                 _send_byte::
 0040 00D0              rcall push_gset2
 0042 602F              mov R22,R16
 0044                   .dbline -1
 0044                   .dbline 33
                       ;    }  
                       ; /*         字节发送函数            */
                       ; void send_byte(unsigned char para)
                       ;      {
 0044                   .dbline 35
                       ;       unsigned char i;
                       ;       PORTC&=0xef;//cs=0      
 0044 85B3              in R24,0x15
 0046 8F7E              andi R24,239
 0048 85BB              out 0x15,R24
 004A                   .dbline 36
                       ;       delay_us(90);
 004A 0AE5              ldi R16,90
 004C 10E0              ldi R17,0
 004E 00D0              rcall _delay_us
 0050                   .dbline 37
                       ;       for(i=0;i<8;i++)
 0050 4427              clr R20
 0052 15C0              rjmp L12
 0054                 L9:
 0054                   .dbline 38
                       ;          {
 0054                   .dbline 39
                       ;           if((para&0x80)==0x80)
 0054 862F              mov R24,R22
 0056 8078              andi R24,128
 0058 8038              cpi R24,128
 005A 11F4              brne L13
 005C                   .dbline 40
                       ;               PORTC|=0x04;//data=1   
 005C AA9A              sbi 0x15,2
 005E 03C0              rjmp L14
 0060                 L13:
 0060                   .dbline 42
                       ;           else
                       ;               PORTC&=0xfb;//data=0   
 0060 85B3              in R24,0x15
 0062 8B7F              andi R24,251
 0064 85BB              out 0x15,R24
 0066                 L14:
 0066                   .dbline 43
 0066 AB9A              sbi 0x15,3
 0068                   .dbline 44
 0068 0AE0              ldi R16,10
 006A 10E0              ldi R17,0
 006C 00D0              rcall _delay_us
 006E                   .dbline 45
 006E 85B3              in R24,0x15
 0070 877F              andi R24,247
 0072 85BB              out 0x15,R24
 0074                   .dbline 46
 0074 0AE0              ldi R16,10
 0076 10E0              ldi R17,0
 0078 00D0              rcall _delay_us
 007A                   .dbline 47
 007A 660F              lsl R22
 007C                   .dbline 48
 007C                 L10:
 007C                   .dbline 37
 007C 4395              inc R20
 007E                 L12:
 007E                   .dbline 37
 007E 4830              cpi R20,8
 0080 48F3              brlo L9
 0082                   .dbline -2
 0082                   .dbline 49
                       ;           PORTC|=0x08;//clk=1       
                       ;           delay_us(10);
                       ;           PORTC&=0xf7;//clk=0       
                       ;           delay_us(10);
                       ;           para=para<<1;                
                       ;          }       
                       ;      }
 0082                 L8:
 0082 00D0              rcall pop_gset2
 0084                   .dbline 0 ; func end
 0084 0895              ret
 0086                   .dbsym r i 20 c
 0086                   .dbsym r para 22 c
 0086                   .dbfunc s write279 _write279 fI
                       ;           cmd2 -> R20
                       ;           cmd1 -> R22
                         .even
 0086                 _write279::
 0086 00D0              rcall push_gset2
 0088 422F              mov R20,R18
 008A 602F              mov R22,R16
 008C                   .dbline -1
 008C                   .dbline 52
                       ; /*               写sl279双字节命令                */          
                       ; void write279(unsigned char cmd1, unsigned char cmd2)
                       ; {
 008C                   .dbline 53
                       ;     send_byte (cmd1);
 008C 062F              mov R16,R22
 008E D8DF              rcall _send_byte
 0090                   .dbline 54
                       ;     send_byte (cmd2);                              
 0090 042F              mov R16,R20
 0092 D6DF              rcall _send_byte
 0094                   .dbline 55
                       ;     PORTC|=0x10;
 0094 AC9A              sbi 0x15,4
 0096                   .dbline -2
 0096                   .dbline 56
                       ; }
 0096                 L15:
 0096 00D0              rcall pop_gset2
 0098                   .dbline 0 ; func end
 0098 0895              ret
 009A                   .dbsym r cmd2 20 c
 009A                   .dbsym r cmd1 22 c
 009A                   .dbfunc s test1 _test1 fI
                       ;            cmd -> R20
                         .even
 009A                 _test1::
 009A 00D0              rcall push_gset1
 009C 402F              mov R20,R16
 009E                   .dbline -1
 009E                   .dbline 58
                       ; void test1(unsigned char cmd)
                       ;      {
 009E                   .dbline 59
                       ;       send_byte(cmd);                     
 009E 042F              mov R16,R20
 00A0 CFDF              rcall _send_byte
 00A2                   .dbline 60
                       ;       PORTC|=0x10;
 00A2 AC9A              sbi 0x15,4
 00A4                   .dbline 61
                       ;       delay_ms(3000);                                                  
 00A4 08EB              ldi R16,3000
 00A6 1BE0              ldi R17,11
 00A8 00D0              rcall _delay_ms
 00AA                   .dbline -2
 00AA                   .dbline 62
                       ;       }
 00AA                 L16:
 00AA 00D0              rcall pop_gset1
 00AC                   .dbline 0 ; func end
 00AC 0895              ret
 00AE                   .dbsym r cmd 20 c
 00AE                   .dbfunc s mcu_init _mcu_init fI
                         .even
 00AE                 _mcu_init::
 00AE                   .dbline -1
 00AE                   .dbline 65
                       ; /*           MCU初始化            */
                       ; void mcu_init(void)
                       ;     {
 00AE                   .dbline 66
                       ;       MCUCR=0x00;
 00AE 2224              clr R2
 00B0 25BE              out 0x35,R2
 00B2                   .dbline 67
                       ;       DDRC=0xfd;
 00B2 8DEF              ldi R24,253
 00B4 84BB              out 0x14,R24
 00B6                   .dbline 68
                       ;       PORTC=0xf3;
 00B6 83EF              ldi R24,243
 00B8 85BB              out 0x15,R24
 00BA                   .dbline -2
 00BA                   .dbline 69
                       ;     }     
 00BA                 L17:
 00BA                   .dbline 0 ; func end
 00BA 0895              ret
 00BC                   .dbfunc s main _main fI
                       ;          count -> R20
                       ;           temp -> R22
                       ;              i -> R10
                         .even
 00BC                 _main::
 00BC                   .dbline -1
 00BC                   .dbline 72
                       ; /*

⌨️ 快捷键说明

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