久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4116|回復: 2
打印 上一主題 下一主題
收起左側(cè)

24c02調(diào)試完成,勿改

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

適用于PIC系列,匯編、內(nèi)存緊張的朋友用
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  
      
;**********************發(fā)送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  
;**********************發(fā)送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                  
                  
;**********************發(fā)送一個字節(jié)**************************
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     
      
;************************接收一個字節(jié)*****************************
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      
      
;**********************發(fā)送********************************
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
   
   

評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费99视频| 91精品中文字幕一区二区三区 | 成人精品一区二区三区 | 成人欧美一区二区三区在线观看 | 日本三级在线 | 91视频a | 色视频在线免费观看 | 国产一区欧美一区 | 秋霞在线一区 | 婷婷中文字幕 | 天天天天天天天干 | 黄a在线播放 | 中文字幕精 | 91不卡| 韩国av网站在线观看 | 国产精品国产精品国产专区不卡 | 97精品国产一区二区三区 | 久久精品色欧美aⅴ一区二区 | 美女福利视频网站 | 亚洲国产成人一区二区 | 日韩久久在线 | 韩国精品在线 | 韩日在线观看视频 | 91麻豆精品国产91久久久更新资源速度超快 | 视频一区在线观看 | 久热精品在线观看视频 | 国产精品久久久久久中文字 | 日韩中文一区二区三区 | 性国产xxxx乳高跟 | 欧美精品一区二区蜜桃 | 久久久久久国产精品免费免费 | 精品久久久久香蕉网 | 国产精品一区在线播放 | 久久久亚洲一区 | 99久久久久国产精品免费 | 最近中文字幕在线视频1 | 成人av免费 | 免费高潮视频95在线观看网站 | 成人免费一区二区三区视频网站 | 欧美黄色一区 | 99久久婷婷国产综合精品 |