Debugging of 24c02 based on PIC microcontroller is completed

Publisher:Whisper123Latest update time:2019-11-06 Source: 51hei Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere

Suitable for PIC series, assembly, memory tight friends

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

;**********************Start signal****************************************

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

;***********************Stop signal********************************

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  

       

;**********************Send 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  

;**********************Send 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                   

                  

;**********************Send a byte**************************

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,OF

      ; BSF    PORTC,ACKF

       RETLW  0     

       

;************************Receive a byte********************************

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,OF

       ;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       

       

;**********************send********************************

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

;**********************take over****************************

SNAKE

       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 ; get the address of 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 ; get the address of 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

[1] [2]
Reference address:Debugging of 24c02 based on PIC microcontroller is completed

Previous article:PIC microcontroller USB MSC application: use MMC/SD card as storage device for reading and writing
Next article:A simple applet for PIC microcontroller to read/write MMC/SD card

Recommended ReadingLatest update time:2024-11-16 20:49

24C02 storage and reading
/* ------Storage and reading of 24C02----------- 1. Use 24C02 to save the content of an array, and then read it out; 2. Be proficient in the operation of the IIC bus; 3. Start signal, stop signal, response and non-response signals, busy signal,    read a byte data subroutine from the current position, write a byte
[Microcontroller]
Latest Microcontroller Articles
  • Download from the Internet--ARM Getting Started Notes
    A brief introduction: From today on, the ARM notebook of the rookie is open, and it can be regarded as a place to store these notes. Why publish it? Maybe you are interested in it. In fact, the reason for these notes is ...
  • Learn ARM development(22)
    Turning off and on interrupts Interrupts are an efficient dialogue mechanism, but sometimes you don't want to interrupt the program while it is running. For example, when you are printing something, the program suddenly interrupts and another ...
  • Learn ARM development(21)
    First, declare the task pointer, because it will be used later. Task pointer volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • Learn ARM development(20)
    With the previous Tick interrupt, the basic task switching conditions are ready. However, this "easterly" is also difficult to understand. Only through continuous practice can we understand it. ...
  • Learn ARM development(19)
    After many days of hard work, I finally got the interrupt working. But in order to allow RTOS to use timer interrupts, what kind of interrupts can be implemented in S3C44B0? There are two methods in S3C44B0. ...
  • Learn ARM development(14)
  • Learn ARM development(15)
  • Learn ARM development(16)
  • Learn ARM development(17)
Change More Related Popular Components

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号