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

📄 readswitch.lis

📁 电梯楼层采集器代码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module ReadSwitch.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\ReadSwitch.c
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\ReadSwitch.c
 0000           L3:
 0000                   .blkb 2
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\ReadSwitch.c
 0000                   .dbfunc e ReadHC165Switch _ReadHC165Switch fV
 0000                   .dbstruct 0 3 ReadHC165Switch
 0000                   .dbfield 0 Device_Address c
 0000                   .dbfield 1 HC165Switch A[2:2]c
 0000                   .dbend
 0000                   .dbsym s Read_buffer L3 pc
 0000           ;      Readwitch -> R16,R17
 0000           ;              i -> R18
 0000           ;              j -> R20
 0000           ;            ret -> R16
                        .even
 0000           _ReadHC165Switch::
 0000 4A93              st -y,R20
 0002                   .dbline -1
 0002                   .dbline 22
 0002           ; 
 0002           ; #include"include.h"
 0002           ; 
 0002           ; #define CLK    7
 0002           ; #define SH_LD  5
 0002           ; 
 0002           ; 
 0002           ; #define SER_SL_HI()      DDRB |= (1<<SH_LD)
 0002           ; #define SER_SL_LO()      DDRB &= ~(1<<SH_LD)   //SH/LD 接PB5
 0002           ; 
 0002           ; #define SER_CK_HI()      DDRB |= (1<<CLK)
 0002           ; #define SER_CK_LO()      DDRB &= ~(1<<CLK)   //SCK 接 PB7
 0002           ; 
 0002           ; #define CLK_EN_HI()            DDRB |= (1<<4) 
 0002           ; #define CLK_EN_LO()            DDRB &= (1<<4)
 0002           ; 
 0002           ; #define HC165Switch_Port()  (PINB&(1<<6))   //输入 QH 接PB6
 0002           ; 
 0002           ; //------------------------------------------------------------------------------
 0002           ; //读AVR控制器地址码和扩展口的按键
 0002           ; void ReadHC165Switch(void)
 0002           ; {
 0002                   .dbline 25
 0002           ;   static unsigned char *Read_buffer;
 0002           ;   struct ReadHC165Switch *Readwitch;
 0002           ;   unsigned char i,j,ret = 0xff;
 0002 0FEF              ldi R16,255
 0004                   .dbline 26
 0004           ;   Read_buffer = Read74HC165Switch;
 0004 80E0              ldi R24,<_Read74HC165Switch
 0006 90E0              ldi R25,>_Read74HC165Switch
 0008 90930100          sts L3+1,R25
 000C 80930000          sts L3,R24
 0010                   .dbline 27
 0010           ;   CLK_EN_LO();
 0010 87B3              in R24,0x17
 0012 8071              andi R24,16
 0014 87BB              out 0x17,R24
 0016                   .dbline 29
 0016           ;  //数据锁存,在shift/load输入一脉冲  
 0016           ;   SER_CK_LO();
 0016 BF98              cbi 0x17,7
 0018                   .dbline 30
 0018           ;   SER_SL_HI();
 0018 BD9A              sbi 0x17,5
 001A                   .dbline 31
 001A           ;   asm("nop");
 001A 0000              nop
 001C                   .dbline 32
 001C           ;   SER_SL_LO();
 001C BD98              cbi 0x17,5
 001E                   .dbline 33
 001E           ;   asm("nop");
 001E 0000              nop
 0020                   .dbline 34
 0020           ;   SER_SL_HI();
 0020 BD9A              sbi 0x17,5
 0022                   .dbline 35
 0022           ;   asm("nop");
 0022 0000              nop
 0024                   .dbline 36
 0024           ;   asm("nop");
 0024 0000              nop
 0026                   .dbline 38
 0026           ;  //读数据
 0026           ;  for(i=0;i<sizeof(struct ReadHC165Switch);i++)
 0026 2227              clr R18
 0028 1CC0              xjmp L7
 002A           L4:
 002A                   .dbline 39
 002A           ;  {
 002A                   .dbline 40
 002A           ;        for(j=0;j<8;j++)
 002A 4427              clr R20
 002C 0EC0              xjmp L11
 002E           L8:
 002E                   .dbline 41
 002E           ;        {
 002E                   .dbline 42
 002E           ;           SER_CK_HI();
 002E BF9A              sbi 0x17,7
 0030                   .dbline 43
 0030           ;               if(HC165Switch_Port()==0)
 0030 B699              sbic 0x16,6
 0032 03C0              rjmp L12
 0034           X0:
 0034                   .dbline 44
 0034           ;               {
 0034                   .dbline 45
 0034           ;                 ret <<= 1;
 0034 000F              lsl R16
 0036                   .dbline 46
 0036           ;                 ret &= ~0x01;
 0036 0E7F              andi R16,254
 0038                   .dbline 47
 0038           ;               }
 0038 02C0              xjmp L13
 003A           L12:
 003A                   .dbline 49
 003A           ;               else
 003A           ;               {
 003A                   .dbline 50
 003A           ;                 ret <<= 1;
 003A 000F              lsl R16
 003C                   .dbline 51
 003C           ;                 ret |= 0x01;
 003C 0160              ori R16,1
 003E                   .dbline 52
 003E           ;               }
 003E           L13:
 003E                   .dbline 53
 003E           ;               asm("nop");
 003E 0000              nop
 0040                   .dbline 54
 0040           ;               asm("nop");
 0040 0000              nop
 0042                   .dbline 55
 0042           ;               SER_CK_LO();
 0042 BF98              cbi 0x17,7
 0044                   .dbline 56
 0044           ;               asm("nop");
 0044 0000              nop
 0046                   .dbline 57
 0046           ;               asm("nop");      
 0046 0000              nop
 0048                   .dbline 58
 0048           ;        }
 0048           L9:
 0048                   .dbline 40
 0048 4395              inc R20
 004A           L11:
 004A                   .dbline 40
 004A 4830              cpi R20,8
 004C 80F3              brlo L8
 004E           X1:
 004E                   .dbline 59
 004E           ;        *Read_buffer++ = ret;
 004E E0910000          lds R30,L3
 0052 F0910100          lds R31,L3+1
 0056 0193              st Z+,R16
 0058 F0930100          sts L3+1,R31
 005C E0930000          sts L3,R30
 0060                   .dbline 60
 0060           ;   }
 0060           L5:
 0060                   .dbline 38
 0060 2395              inc R18
 0062           L7:
 0062                   .dbline 38
 0062 2330              cpi R18,3
 0064 10F3              brlo L4
 0066           X2:
 0066                   .dbline 61
 0066           ;   Readwitch = (struct ReadHC165Switch *)Read74HC165Switch;
 0066 00E0              ldi R16,<_Read74HC165Switch
 0068 10E0              ldi R17,>_Read74HC165Switch
 006A                   .dbline -2
 006A           L2:
 006A                   .dbline 0 ; func end
 006A 4991              ld R20,y+
 006C 0895              ret
 006E                   .dbsym r Readwitch 16 pS[ReadHC165Switch]
 006E                   .dbsym r i 18 c
 006E                   .dbsym r j 20 c
 006E                   .dbsym r ret 16 c
 006E                   .dbend
 006E                   .dbfunc e ReadSwitch _ReadSwitch fV
 006E           ;              i -> R16
                        .even
 006E           _ReadSwitch::
 006E                   .dbline -1
 006E                   .dbline 66
 006E           ; }
 006E           ; //------------------------------------------------------------------------------
 006E           ; //扫描按键  PA,PC端口
 006E           ; void  ReadSwitch(void)
 006E           ; { 
 006E                   .dbline 68
 006E           ;     unsigned char i; 
 006E           ;     ReadSwitchPINA = 0; 
 006E 2224              clr R2
 0070 20920000          sts _ReadSwitchPINA,R2
 0074                   .dbline 69
 0074           ;       ReadSwitchPINC = 0;
 0074 20920000          sts _ReadSwitchPINC,R2
 0078                   .dbline 70
 0078           ;     for(i=0; i<40; i++); 
 0078 0027              clr R16

⌨️ 快捷键说明

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