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

📄 74hc595.lis

📁 mega16 ucos操作系统
💻 LIS
字号:
                        .module _74HC595.c
                        .area text(rom, con, rel)
 0000                   .dbfile ..\source\bms\74HC595.c
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\MEGA16\source\bms\74HC595.c
 0000                   .dbfunc e OR595send_byte _OR595send_byte fV
 0000           ;              i -> R20
 0000           ;           byte -> R10
                        .even
 0000           _OR595send_byte::
 0000 AA92              st -y,R10
 0002 4A93              st -y,R20
 0004 A02E              mov R10,R16
 0006                   .dbline -1
 0006                   .dbline 5
 0006           ; #define _74HC595_GLOBALS
 0006           ; #include "..\source\CPU_Source\includes.h"
 0006           ; 
 0006           ; void OR595send_byte(INT8U byte)
 0006           ; {
 0006                   .dbline 7
 0006           ;     INT8U i;
 0006           ;       for(i=0;i<8;i++)
 0006 4427              clr R20
 0008 0EC0              xjmp L5
 000A           L2:
 000A                   .dbline 8
 000A           ;       {
 000A                   .dbline 9
 000A           ;           if(byte & (1<<(7-i)))
 000A 17E0              ldi R17,7
 000C 141B              sub R17,R20
 000E 01E0              ldi R16,1
 0010 0E940000          xcall lsl8
 0014 2A2C              mov R2,R10
 0016 2022              and R2,R16
 0018 11F0              breq L6
 001A           X0:
 001A                   .dbline 10
 001A           ;                   OR595_dataON;
 001A DC9A              sbi 0x1b,4
 001C 01C0              xjmp L7
 001E           L6:
 001E                   .dbline 12
 001E           ;               else
 001E           ;                   OR595_dataOFF;
 001E DC98              cbi 0x1b,4
 0020           L7:
 0020                   .dbline 13
 0020           ;               OR595_clkON;
 0020 DE9A              sbi 0x1b,6
 0022                   .dbline 14
 0022           ;               OR595_clkOFF;           
 0022 DE98              cbi 0x1b,6
 0024                   .dbline 15
 0024           ;       }
 0024           L3:
 0024                   .dbline 7
 0024 4395              inc R20
 0026           L5:
 0026                   .dbline 7
 0026 4830              cpi R20,8
 0028 80F3              brlo L2
 002A           X1:
 002A                   .dbline -2
 002A           L1:
 002A                   .dbline 0 ; func end
 002A 4991              ld R20,y+
 002C A990              ld R10,y+
 002E 0895              ret
 0030                   .dbsym r i 20 c
 0030                   .dbsym r byte 10 c
 0030                   .dbend
 0030                   .dbfunc e OR595send_int _OR595send_int fV
 0030           ;         byte_L -> R10
 0030           ;         byte_H -> R12
 0030           ;           data -> R10,R11
                        .even
 0030           _OR595send_int::
 0030 0E940000          xcall push_xgset003C
 0034 5801              movw R10,R16
 0036                   .dbline -1
 0036                   .dbline 19
 0036           ; }
 0036           ; 
 0036           ; void OR595send_int(INT16U data)
 0036           ; {
 0036                   .dbline 21
 0036           ;     INT8U byte_H,byte_L;
 0036           ;       byte_H=data>>8;
 0036 6501              movw R12,R10
 0038 CD2C              mov R12,R13
 003A DD24              clr R13
 003C                   .dbline 22
 003C           ;       byte_L=data;
 003C                   .dbline 23
 003C           ;       OR595send_byte(byte_H); 
 003C 0C2D              mov R16,R12
 003E E0DF              xcall _OR595send_byte
 0040                   .dbline 24
 0040           ;       OR595send_byte(byte_L);                 
 0040 0A2D              mov R16,R10
 0042 DEDF              xcall _OR595send_byte
 0044                   .dbline 25
 0044           ;       OR595_latchON;
 0044 DD9A              sbi 0x1b,5
 0046                   .dbline 26
 0046           ;       OR595_latchOFF;
 0046 DD98              cbi 0x1b,5
 0048                   .dbline -2
 0048           L8:
 0048                   .dbline 0 ; func end
 0048 0C940000          xjmp pop_xgset003C
 004C                   .dbsym r byte_L 10 c
 004C                   .dbsym r byte_H 12 c
 004C                   .dbsym r data 10 i
 004C                   .dbend
 004C                   .dbfunc e OR595Bsend_byte _OR595Bsend_byte fV
 004C           ;              i -> R20
 004C           ;           byte -> R10
                        .even
 004C           _OR595Bsend_byte::
 004C AA92              st -y,R10
 004E 4A93              st -y,R20
 0050 A02E              mov R10,R16
 0052                   .dbline -1
 0052                   .dbline 30
 0052           ; }
 0052           ; 
 0052           ; void OR595Bsend_byte(unsigned char byte)  //595保存一个字节到输出口
 0052           ; {
 0052                   .dbline 32
 0052           ;     unsigned char i;
 0052           ;       for(i=0;i<8;i++)
 0052 4427              clr R20
 0054 0EC0              xjmp L13
 0056           L10:
 0056                   .dbline 33
 0056           ;       {
 0056                   .dbline 34
 0056           ;           if(byte & (1<<(7-i)))
 0056 17E0              ldi R17,7
 0058 141B              sub R17,R20
 005A 01E0              ldi R16,1
 005C 0E940000          xcall lsl8
 0060 2A2C              mov R2,R10
 0062 2022              and R2,R16
 0064 11F0              breq L14
 0066           X2:
 0066                   .dbline 35
 0066           ;                   OR595B_dataON;
 0066 C29A              sbi 0x18,2
 0068 01C0              xjmp L15
 006A           L14:
 006A                   .dbline 37
 006A           ;               else
 006A           ;                   OR595B_dataOFF;
 006A C298              cbi 0x18,2
 006C           L15:
 006C                   .dbline 38
 006C           ;               OR595B_clkON;
 006C C39A              sbi 0x18,3
 006E                   .dbline 40
 006E           ; 
 006E           ;               OR595B_clkOFF;  
 006E C398              cbi 0x18,3
 0070                   .dbline 41
 0070           ;       }
 0070           L11:
 0070                   .dbline 32
 0070 4395              inc R20
 0072           L13:
 0072                   .dbline 32
 0072 4830              cpi R20,8
 0074 80F3              brlo L10
 0076           X3:
 0076                   .dbline -2
 0076           L9:
 0076                   .dbline 0 ; func end
 0076 4991              ld R20,y+
 0078 A990              ld R10,y+
 007A 0895              ret
 007C                   .dbsym r i 20 c
 007C                   .dbsym r byte 10 c
 007C                   .dbend
 007C                   .dbfunc e OR595Bsend_int _OR595Bsend_int fV
 007C           ;         byte_L -> R10
 007C           ;         byte_H -> R12
 007C           ;           data -> R10,R11
                        .even
 007C           _OR595Bsend_int::
 007C 0E940000          xcall push_xgset003C
 0080 5801              movw R10,R16
 0082                   .dbline -1
 0082                   .dbline 45
 0082           ; }
 0082           ; 
 0082           ; void OR595Bsend_int(unsigned int data)        //595发送16位数
 0082           ; {
 0082                   .dbline 47
 0082           ;     unsigned char byte_H,byte_L;
 0082           ;       byte_H=data>>8;
 0082 6501              movw R12,R10
 0084 CD2C              mov R12,R13
 0086 DD24              clr R13
 0088                   .dbline 48
 0088           ;       byte_L=data;
 0088                   .dbline 49
 0088           ;       OR595Bsend_byte(byte_H);        
 0088 0C2D              mov R16,R12
 008A E0DF              xcall _OR595Bsend_byte
 008C                   .dbline 50
 008C           ;       OR595Bsend_byte(byte_L);                        
 008C 0A2D              mov R16,R10
 008E DEDF              xcall _OR595Bsend_byte
 0090                   .dbline 51
 0090           ;       OR595B_latchON;
 0090 C49A              sbi 0x18,4
 0092                   .dbline 52
 0092           ;       OR595B_latchOFF;
 0092 C498              cbi 0x18,4
 0094                   .dbline -2
 0094           L16:
 0094                   .dbline 0 ; func end
 0094 0C940000          xjmp pop_xgset003C
 0098                   .dbsym r byte_L 10 c
 0098                   .dbsym r byte_H 12 c
 0098                   .dbsym r data 10 i
 0098                   .dbend
 0098           ; }

⌨️ 快捷键说明

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