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

📄 at93c46.lis

📁 93c46的驱动程序,C51代码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 006E 02C0              rjmp L18
 0070                   .dbline 146
 0070           ;               {
 0070                   .dbline 147
 0070           ;                       set_di();
 0070 C59A              sbi 0x18,5
 0072                   .dbline 148
 0072           ;               }
 0072 01C0              xjmp L19
 0074           L18:
 0074                   .dbline 150
 0074           ;               else
 0074           ;               {
 0074                   .dbline 151
 0074           ;                       clr_di();
 0074 C598              cbi 0x18,5
 0076                   .dbline 152
 0076           ;               }
 0076           L19:
 0076                   .dbline 153
 0076 EADF              xcall _delay_us
 0078                   .dbline 154
 0078 C79A              sbi 0x18,7
 007A                   .dbline 155
 007A E8DF              xcall _delay_us
 007C                   .dbline 156
 007C C798              cbi 0x18,7
 007E                   .dbline 157
 007E E6DF              xcall _delay_us
 0080                   .dbline 158
 0080 C598              cbi 0x18,5
 0082                   .dbline 159
 0082           L15:
 0082                   .dbline 143
 0082 4395              inc R20
 0084 660F              lsl R22
 0086           L17:
 0086                   .dbline 143
 0086 4230              cpi R20,2
 0088 88F3              brlo L14
 008A                   .dbline -2
 008A           L13:
 008A 0E940000          xcall pop_gset2
 008E                   .dbline 0 ; func end
 008E 0895              ret
 0090                   .dbsym r i 20 c
 0090                   .dbsym r op 22 c
 0090                   .dbend
 0090                   .dbfunc e Send_bits _Send_bits fV
 0090           ;      temp_data -> R20
 0090           ;              i -> R22
 0090           ;         s_data -> R10
                        .even
 0090           _Send_bits::
 0090 0E940000          xcall push_gset3
 0094 A02E              mov R10,R16
 0096                   .dbline -1
 0096                   .dbline 168
 0096           ;               delay_us();
 0096           ;               set_sk();
 0096           ;               delay_us();
 0096           ;               clr_sk();
 0096           ;               delay_us();
 0096           ;               clr_di();
 0096           ;       }
 0096           ; }
 0096           ; /*********************************************
 0096           ; 函数功能:发送7个BIT 
 0096           ; 描    述:地址或其他
 0096           ; 入口参数:s_data
 0096           ; 出口参数:无
 0096           ; *********************************************/
 0096           ; void Send_bits(uint8_t s_data)
 0096           ; {
 0096                   .dbline 169
 0096           ;        uint8_t i,temp_data = 0;
 0096 4427              clr R20
 0098                   .dbline 170
 0098           ;        for (i=0;i<7;i++,s_data <<=1)
 0098 6627              clr R22
 009A 0EC0              xjmp L24
 009C           L21:
 009C                   .dbline 171
 009C           ;        {
 009C                   .dbline 172
 009C           ;               temp_data = s_data;
 009C 4A2D              mov R20,R10
 009E                   .dbline 173
 009E           ;               if (temp_data & 0x40)     //   xxxx'xxxx
 009E A6FE              sbrs R10,6
 00A0 02C0              rjmp L25
 00A2                   .dbline 174
 00A2           ;               {                                                 //  &0100'0000
 00A2                   .dbline 175
 00A2           ;                       set_di();
 00A2 C59A              sbi 0x18,5
 00A4                   .dbline 176
 00A4           ;               }
 00A4 01C0              xjmp L26
 00A6           L25:
 00A6                   .dbline 178
 00A6           ;               else
 00A6           ;               {
 00A6                   .dbline 179
 00A6           ;                       clr_di();
 00A6 C598              cbi 0x18,5
 00A8                   .dbline 180
 00A8           ;               }
 00A8           L26:
 00A8                   .dbline 181
 00A8 D1DF              xcall _delay_us
 00AA                   .dbline 182
 00AA C79A              sbi 0x18,7
 00AC                   .dbline 183
 00AC CFDF              xcall _delay_us
 00AE                   .dbline 184
 00AE C798              cbi 0x18,7
 00B0                   .dbline 185
 00B0 CDDF              xcall _delay_us
 00B2                   .dbline 186
 00B2 C598              cbi 0x18,5
 00B4                   .dbline 187
 00B4           L22:
 00B4                   .dbline 170
 00B4 6395              inc R22
 00B6 AA0C              lsl R10
 00B8           L24:
 00B8                   .dbline 170
 00B8 6730              cpi R22,7
 00BA 80F3              brlo L21
 00BC                   .dbline -2
 00BC           L20:
 00BC 0E940000          xcall pop_gset3
 00C0                   .dbline 0 ; func end
 00C0 0895              ret
 00C2                   .dbsym r temp_data 20 c
 00C2                   .dbsym r i 22 c
 00C2                   .dbsym r s_data 10 c
 00C2                   .dbend
 00C2                   .dbfunc e Read _Read fc
 00C2           ;              i -> R20
 00C2           ;      read_data -> R22
 00C2           ;         buffer -> R10
 00C2           ;            add -> R20
                        .even
 00C2           _Read::
 00C2 0E940000          xcall push_gset3
 00C6 402F              mov R20,R16
 00C8                   .dbline -1
 00C8                   .dbline 196
 00C8           ;               delay_us();
 00C8           ;               set_sk();
 00C8           ;               delay_us();
 00C8           ;               clr_sk();
 00C8           ;               delay_us();
 00C8           ;               clr_di();
 00C8           ;        }
 00C8           ; }
 00C8           ; /*********************************************
 00C8           ; 函数功能:从指定地址读出一个字节的数据 
 00C8           ; 描    述:从已add为地址的eeprom中读数据
 00C8           ; 入口参数:add
 00C8           ; 出口参数:read_data
 00C8           ; *********************************************/
 00C8           ; uint8_t Read(uint8_t add)
 00C8           ; {
 00C8                   .dbline 197
 00C8           ;       uint8_t i,buffer = 0,read_data = 0;
 00C8 AA24              clr R10
 00CA                   .dbline 197
 00CA 6627              clr R22
 00CC                   .dbline 198
 00CC           ;       set_cs();
 00CC C49A              sbi 0x18,4
 00CE                   .dbline 199
 00CE           ;       delay_us();
 00CE BEDF              xcall _delay_us
 00D0                   .dbline 200
 00D0           ;       Send_str_op(READ);
 00D0 00E8              ldi R16,128
 00D2 C1DF              xcall _Send_str_op
 00D4                   .dbline 201
 00D4           ;       Send_bits(add);
 00D4 042F              mov R16,R20
 00D6 DCDF              xcall _Send_bits
 00D8                   .dbline 202
 00D8           ;       for (i=0;i<8;i++)
 00D8 4427              clr R20
 00DA 10C0              xjmp L31
 00DC           L28:
 00DC                   .dbline 203
 00DC                   .dbline 204
 00DC C79A              sbi 0x18,7
 00DE                   .dbline 205
 00DE B6DF              xcall _delay_us
 00E0                   .dbline 206
 00E0 86B3              in R24,0x16
 00E2 8074              andi R24,64
 00E4 A82A              or R10,R24
 00E6                   .dbline 207
 00E6 A694              lsr R10
 00E8 A694              lsr R10
 00EA A694              lsr R10
 00EC A694              lsr R10
 00EE A694              lsr R10
 00F0 A694              lsr R10
 00F2                   .dbline 208
 00F2 660F              lsl R22
 00F4                   .dbline 209
 00F4 6A29              or R22,R10
 00F6                   .dbline 210
 00F6 AADF              xcall _delay_us
 00F8                   .dbline 211
 00F8 C798              cbi 0x18,7
 00FA                   .dbline 212
 00FA           L29:
 00FA                   .dbline 202
 00FA 4395              inc R20
 00FC           L31:
 00FC                   .dbline 202
 00FC 4830              cpi R20,8
 00FE 70F3              brlo L28
 0100                   .dbline 213
 0100           ;       {
 0100           ;               set_sk();
 0100           ;               delay_us();
 0100           ;               buffer |= (PIN_DO & 0X40);       //读取引脚电平
 0100           ;               buffer >>= DO;
 0100           ;               read_data <<=1;
 0100           ;               read_data |= buffer;
 0100           ;               delay_us();
 0100           ;               clr_sk();
 0100           ;       }
 0100           ;       delay_us();
 0100 A5DF              xcall _delay_us
 0102                   .dbline 214
 0102           ;       clr_cs();
 0102 C498              cbi 0x18,4
 0104                   .dbline 215
 0104           ;       return read_data;
 0104 062F              mov R16,R22
 0106                   .dbline -2
 0106           L27:
 0106 0E940000          xcall pop_gset3
 010A                   .dbline 0 ; func end
 010A 0895              ret
 010C                   .dbsym r i 20 c
 010C                   .dbsym r read_data 22 c
 010C                   .dbsym r buffer 10 c
 010C                   .dbsym r add 20 c
 010C                   .dbend
 010C                   .dbfunc e Delay_ms _Delay_ms fV
 010C           ;              i -> R20
 010C           ;             ms -> R16,R17
                        .even
 010C           _Delay_ms::
 010C 0E940000          xcall push_gset1
 0110                   .dbline -1
 0110                   .dbline 224
 0110           ; }
 0110           ; /*********************************************
 0110           ; 函数功能:延时函数 
 0110           ; 描    述:延时
 0110           ; 入口参数:ms
 0110           ; 出口参数:void
 0110           ; *********************************************/
 0110           ; void Delay_ms(uint16_t ms)
 0110           ; {
 0110                   .dbline 226
 0110           ;       uint8_t i;
 0110           ;       for (;ms>0;ms--)
 0110 07C0              xjmp L36
 0112           L33:
 0112                   .dbline 227
 0112           ;               for(i = 0;i<100;i++)
 0112 4427              clr R20
 0114 01C0              xjmp L40
 0116           L37:
 0116                   .dbline 228
 0116           L38:
 0116                   .dbline 227
 0116 4395              inc R20
 0118           L40:
 0118                   .dbline 227
 0118 4436              cpi R20,100
 011A E8F3              brlo L37
 011C           L34:
 011C                   .dbline 226
 011C 0150              subi R16,1
 011E 1040              sbci R17,0
 0120           L36:
 0120                   .dbline 226
 0120 0030              cpi R16,0
 0122 0107              cpc R16,R17

⌨️ 快捷键说明

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