欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4194|回復: 2
打印 上一主題 下一主題
收起左側

24c02調試完成,勿改

[復制鏈接]
跳轉到指定樓層
樓主
ID:413735 發表于 2018-10-22 21:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 lzsky 于 2018-10-22 21:38 編輯

適用于PIC系列,匯編、內存緊張的朋友用
SDA      EQU    5       ;'OC'
SCL      EQU    4
ACKF     EQU    0
EE_VCC  EQU   2
EE_WP   EQU   1       ;'H' DISABLE 'L'ENABLE
DO    EQU 7
TX_BUF    EQU 0X30
BUF_IN    EQU 0X31
EEPROM    EQU 0X32
BIT_COUNT  EQU 0X33
byte_count equ 0x34
ACK     EQU 0X35
rom_buf1  equ 0x36
rom_buf2  equ 0x37
rom_buf3  equ 0x38
rom_buf4  equ 0x39
rom_buf5  equ 0x3a
;**********************啟動信號***************************************
BSTART:
       BSF    PORTA,SDA
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BSF    PORTA,SCL
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BCF    PORTA,SDA
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BCF    PORTA,SCL
       NOP
       NOP
       RETLW  0
;***********************停止信號********************************
BSTOP:
        
       BCF    PORTA,SDA
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BSF    PORTA,SCL
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BSF    PORTA,SDA
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BCF    PORTA,SCL
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       RETLW  0  
      
;**********************發送N_ACK**************************
SEND_ACK:     
     NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
     BCF     PORTA,SDA
     NOP
       NOP
       NOP
       NOP
     NOP
       NOP
       NOP
       NOP
     BSF     PORTA,SCL
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BCF     PORTA,SCL
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       RETLW   0  
;**********************發送N_ACK**************************
READ_ACK:         
     BSF    TRISA,SDA    ;SET SDA IN
     CLRF   ACK
     NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
     BSF     PORTA,SCL
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BTFSS  PORTA,SDA
       INCF    ACK,F
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BCF     PORTA,SCL
       BCF   TRISA,SDA    ;SET SDA OUT
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       RETLW   ACK;0                  
                  
;**********************發送一個字節**************************
BYTEOUT:     
       MOVLW  D'8'
       MOVWF  BIT_COUNT
TXLP   
       nop
       nop
       CALL   BITOUT
       RLF    TX_BUF,F
       DECFSZ BIT_COUNT,F
       GOTO   TXLP
       CALL  READ_ACK
       ;CALL   BITIN   ;ACK
       ;BTFSC  EEPROM,DI
      ; BSF    PORTC,ACKF
       RETLW  0     
      
;************************接收一個字節*****************************
BYTEIN:
       BSF    TRISA,SDA    ;SET SDA IN
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       CLRF   BUF_IN
       MOVLW  D'8'
       MOVWF  BIT_COUNT
       BCF   C          ;BCF    STATUS,0
RXLP   RLF    BUF_IN,F
       ;BCF    BUFIN,0
       CALL   BITIN
       ;BTFSC  EEPROM,DI
       ;BSF    BUFIN,0
       DECFSZ BIT_COUNT,F
       GOTO   RXLP
       ;BSF    EEPROM,DO
       ;CALL   BITOUT
       BCF   TRISA,SDA    ;SET SDA OUT
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       RETLW  0      
      
;**********************發送********************************
BITOUT
       ;MOVLW   B'00111111'
       ;MOVWF  TRISA
      
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BTFSS   TX_BUF,7
       GOTO    BITLOW
       BSF     PORTA,SDA
       GOTO    CLKOUT
BITLOW BCF     PORTA,SDA
   
CLKOUT
    NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
    NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
    BSF     PORTA,SCL
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BCF     PORTA,SCL
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       RETLW   0
;**********************接收****************************
BITIN
       BCF     BUF_IN,0          ;EEPROM,DI
       ;BSF    TRISA,SDA    ;SET SDA IN
      
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BSF     PORTA,SCL
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       BTFSC   PORTA,SDA
       BSF     BUF_IN,0
       BCF     PORTA,SCL
       ;BCF   TRISA,SDA    ;SET SDA OUT
       RETLW   0      
;-------------------------
;temp0:addr
;temp1:data      
;-------------------------
writebyte
   nop
   nop
     call   BSTART
     nop
     movlw 0xa0
     movwf TX_BUF
     call BYTEOUT
     movf temp0,W
     movwf TX_BUF   
     call BYTEOUT
     movf temp1,W
     movwf TX_BUF   
     call BYTEOUT
     nop
     call BSTOP
     nop
     call BSTOP
     return
     
;-------------------------
;INPUT:temp0 addr
;out:BUFIN      
;-------------------------
readbyte
   nop
   nop
     call   BSTART
     nop
     movlw 0xa0
     movwf TX_BUF
     call BYTEOUT
      nop
   
   nop
     movf temp0,W   ;addr
     movwf TX_BUF
     call BYTEOUT
     nop
     NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
   nop
     call   BSTART
     nop
     NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
     movlw 0xa1   
     movwf TX_BUF   
     call BYTEOUT  
     nop
   nop
   nop
   nop
     call BYTEIN
     call BSTOP
     return      
;-------------------------
;temp0:addr  '0x10'add '0x20'data
;temp1:data      
;-------------------------
writenbyte
   nop
   nop
     call   BSTART
     nop
     movlw 0xa0
     movwf TX_BUF
     call BYTEOUT
     movf temp0,W
     movwf TX_BUF   
     call BYTEOUT
     movlw 0x5
     movwf byte_count
     movlw rom_buf1  ;取rom_buf1地址
     movwf FSR
wx_lp:
   movf INDF,W
   movwf TX_BUF
   call BYTEOUT
     INCF FSR,F
     DECFSZ byte_count,F
     goto wx_lp
     nop
     nop
     call BSTOP
     return                     
;-------------------------
;temp0:addr      '0x10'add '0x20'data
;temp1:data num      
;-------------------------
readnbyte
   nop
   nop
     call   BSTART
     nop
     movlw 0xa0
     movwf TX_BUF
     call BYTEOUT
     
     movf temp0,W
     movwf TX_BUF   
     call BYTEOUT
       NOP
     call   BSTART
     nop
     movlw 0xa1   
     movwf TX_BUF   
     call BYTEOUT  
     movlw 0x5
     movwf byte_count
     movlw rom_buf1  ;取rom_buf1地址
     movwf FSR
rx_lp:
   call BYTEIN
   call SEND_ACK
     movf BUF_IN,W
     movwf INDF
     INCF FSR,F
     DECFSZ byte_count,F
     goto rx_lp
     nop
     nop
     call BSTOP
     return                  
;--------------------------------      
test_eeprom:
   
   movlw 0x44
   movwf add1
   movlw 0x55
   movwf add2
   movlw 0x66
   movwf add3
    ;movlw  0x20
    ;movwf  temp0
    ;movlw  add1    ;0x23     ;data *pt  add1=0x23   flag 2d /2e
    ;movwf  temp1
    ;call writenbyte
   call save_add
   call  Delay100ms      
   call  Delay100ms
    ;call  Delay100ms      
    ;call  Delay100ms
   
   clrf rom_buf1
   clrf rom_buf5
   movlw  0x20
   movwf  temp0
   call  readnbyte
   return
;------------------------------------------
save_add:
   movlw 0xaa
   movwf rom_buf1
   movf  add1,W
   movwf rom_buf2
   movf  add2,W
   movwf rom_buf3
   movf  add3,W
   movwf rom_buf4
   movlw 0x55
   movwf rom_buf5
   movlw 0x20
   movwf temp0
   call  writenbyte
   return   
;------------------------------------------
save_data:
   movlw 0xaa
   movwf rom_buf1
   movf  flag,W
   andlw 0x03
   movwf rom_buf2
   movf  LED_speed,W
   movwf rom_buf3
   movlw 0x08;  add3,W
   movwf rom_buf4
   movlw 0x55
   movwf rom_buf5
   movlw 0x30
   movwf temp0
   call  writenbyte
   return  
;-----------------------------------------
;0x20  
;   
read_add:
   movlw  0x20
   movwf  temp0
   call  readnbyte
   movlw 0xaa
   subwf  rom_buf1,W
   btfss  Z
   goto rd_err
   movlw 0x55
   subwf  rom_buf5,W
   btfss  Z
   goto rd_err
   ;---add is ok----------------
   movf rom_buf2,W
   movwf add1
   movf rom_buf3,W
   movwf add2
   movf rom_buf4,W
   movwf add3
   bsf  match_fin_fb
rd_err   
     nop
     movlw 0xb0
   movwf add1
   movlw 0x16
   movwf add2
   movlw 0x47
   movwf add3
   bsf  match_fin_fb
     
     
     nop
   return
;------------------------------------------
;0x30
;-----------------------------------------
read_data:
   movlw  0x30
   movwf  temp0
   call  readnbyte
   movlw 0xaa
   subwf  rom_buf1,W
   btfss  Z
   goto  rdd_err
   movlw 0x55
   subwf  rom_buf5,W
   btfss  Z
   goto  rdd_err
    movf  rom_buf2,W
    andlw  0x03
    iorwf  flag,F
    movf  rom_buf3,W
    movwf  LED_speed
rdd_err
   nop
   nop
   return
   
   

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:330816 發表于 2018-10-22 23:00 | 只看該作者
能標注一下嗎,有點不懂
回復

使用道具 舉報

板凳
ID:401564 發表于 2018-10-28 17:51 | 只看該作者
為什么那么多的NOP指令,一個延時程序不就可以了嗎?是出于堆棧還是內存方面的考慮?

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表