PIC16C74B MCU and AT24C64 communication program

Single chip microcomputer STM32L151CCU6
1206RGB (single)
0201 package SLP0603 ESD electrostatic diode 5V one-way ESD
Mobile phone crystal 3.2*2.5mm 3225 26M (26.000MHZ) 7.5PF 10PPM 20PPM 30PPM

;================================================ ; PIC16C74B microcontroller and AT24C64 communication ; The function implemented by this program is: ; Write I2C_A, I2C_B.....I2C_K contents to EEPROM ; At the same time, the data is read out in the EEPROM and newly written to each register. ;================================================ LISTP=16C74B #include ERRORLEVEL -302 I2C_A EQU 0X20 I2C_B EQU 0X21 I2C_C EQU 0X22 I2C_D EQU 0X23 I2C_E EQU 0X24 I2C_F EQU 0X25 I2C_G EQU 0X26 REG1 EQU 0X2B REG2 EQU 0X2C COUNT EQU 0X71; I2C BCOUNT EQU 0X72; I2C TXBUF EQU 0X73; I2C RXBUF EQU 0X74; I2C BUSCON EQU 0X75; I2C BUSSTA EQU 0X76; I2C I2CBUF EQU 0X77; I2C SLAVEADDR EQU 0XA0; I2C DATAADDRH EQU 0X01; I2C DATAADDRL EQU 0X00; I2C ;--------------------------------------- ; BUSCON ;--------------------------------------- SLAVE_RW EQU 7 LAST_BYTE_RX EQU 6 SLAVE_ACTIVE EQU 5 TIME_OUT EQU 4 ;--------------------------------------- ; BUSSTA ;--------------------------------------- BUS_BUSY EQU 7 TX_PROGRESS EQU 6 RX_PROGRESS EQU 5 TX_SUCCESS EQU 4 RX_SUCCESS EQU 3 FATAL_ERROR EQU 2; SLAVEEEPROM ABORT EQU 1 ACK_ERROR EQU 0 ;--------------------------------------- R_NOT_W EQU 0 TRUE EQU 1 FALSE EQU 0 SDA EQU 0X04; I2C SCL EQU 0X03; I2C ;================================================ ORG 0X00 GOTO START ORG 0X20 START BCF STATUS, RP1 BCF STATUS, RP0 CLRF RA CLR FRB CLRF RC CLR FRD CLRF RE BSF STATUS, RP0 CLRF TRISA CLRF TRISB CLRF TRISC CLRF TRISD CLRF TRISE MOVLW 0X02 MOVWF I2C_A MOVLW 0X04 MOVWF I2C_B MOVLW 0X03 MOVWF I2C_C MOVLW 0X03 MOVWF I2C_D MOVLW 0X05 MOVWF I2C_E MOVLW 0X06 MOVWF I2C_F MOVLW 0X04 MOVWF I2C_G ;================================================ START1 CALL I2CBUS_INIT CALL REGTOI2CBUF CALL I2CWRITE CALL CLRI2CBUF CALL D10 CALL I2CREAD CALL I2CBUFTOREG GOTO START1 ;================================================ ; CLRI2CBUF ;--------------------------------------- CLRI2CBUF BCF STATUS, RP0 MOVLW I2CBUF MOVWF FSR MOVLW 0X08 MOVWF COUNT CLRLOOP CLRF INDF INCFSZ FSR, F GOTO CLRLOOP RETURN ;--------------------------------------- ; Write each REGISTER data to the I2CBUF buffer ;--------------------------------------- REGTOI2CBUF BCF STATUS, RP0 MOVLW I2CBUF MOVWF FSR MOVFI2C_A, W MOVWF INDF INCFSZ FSR, F MOVFI2C_B, W MOVWF INDF INCFSZ FSR, F MOVFI2C_C, W MOVWF INDF INCFSZ FSR, F MOVFI2C_D, W MOVWF INDF INCFSZ FSR, F MOVFI2C_E, W MOVWF INDF INCFSZ FSR, F MOVFI2C_F, W MOVWF INDF INCFSZ FSR, F MOVFI2C_G, W MOVWF INDF RETURN ;--------------------------------------- ; Write I2CBUF buffer data to each REGISTER ;--------------------------------------- I2CBUFTOREG BCF STATUS, RP0 MOVLW I2CBUF MOVWF FSR MOVF INDF, W MOVWF I2C_A INCFSZ FSR, F MOVF INDF, W MOVWF I2C_B INCFSZ FSR, F MOVF INDF, W MOVWF I2C_C INCFSZ FSR, F MOVF INDF, W MOVWF I2C_D INCFSZ FSR, F MOVF INDF, W MOVWF I2C_E INCFSZ FSR, F MOVF INDF, W MOVWF I2C_F INCFSZ FSR, F MOVF INDF, W MOVWF I2C_G RETURN ;================================================ ; Write data in the I2CBUF buffer to the EEPROM ;================================================ I2CWRITE CALL I2CSTART BTFSS BUSSTA, BUS_BUSY GOTO TX_FAIL BCF BUSCON, SLAVE_RW CALL TX_SLAVE_ADDR BTFSS BUSSTA, TX_SUCCESS GOTO TX_FAIL CALL TX_DATA_ADDR BTFSS BUSSTA, TX_SUCCESS GOTO TX_FAIL MOVLW I2CBUF MOVWF FSR MOVLW 07 MOVWF COUNT T_BYTE_LOOP MOVF INDF, W MOVWF TXBUF CALL I2CTXB BTFSS BUSSTA, TX_SUCCESS GOTO TX_FAIL INCFSZ FSR, F GOTO T_BYTE_LOOP GOTO TX_PASS TX_FAIL CALL I2CSTOP BCF BUSSTA, TX_PROGRESS BCF BUSSTA, TX_SUCCESS RETLW FALSE TX_PASS CALL I2CSTOP BCF BUSSTA, TX_PROGRESS RETLW TRUE ;--------------------------------------- ; read data from EEPROM to I2CBUF register ;--------------------------------------- I2CREAD BCF STATUS, RP0 BCF BUSSTA, RX_SUCCESS CALL I2CSTART BTFSS BUSSTA, BUS_BUSY GOTO RX_FAIL BCF BUSCON, SLAVE_RW CALL TX_SLAVE_ADDR BTFSS BUSSTA, TX_SUCCESS GOTO RX_FAIL CALL TX_DATA_ADDR BTFSS BUSSTA, TX_SUCCESS GOTO RX_FAIL CALL I2CSTART BSF BUSCON, SLAVE_RW CALL TX_SLAVE_ADDR BTFSS BUSSTA, TX_SUCCESS GOTO RX_FAIL BCF BUSSTA, LAST_BYTE_RX MOVLW I2CBUF MOVWF FSR MOVLW 07 MOVWF COUNT R_BYTE_LOOP MOVLW 0X01 XORWF COUNT, W BTFSC STATUS, Z BSF BUSSTA, LAST_BYTE_RX CALL I2CRXB BTFSS BUSSTA, RX_SUCCESS GOTO RX_FAIL MOVF RXBUF, W MOVWF INDF INCFSZ FSR, F GOTO R_BYTE_LOOP GOTO RX_PASS RX_FAIL CALL I2CSTOP BCF BUSSTA, RX_PROGRESS BCF BUSSTA, RX_SUCCESS RETLW FALSE RX_PASS CALL I2CSTOP BCF STATUS, RP0 BCF BUSSTA, TX_PROGRESS BCF BUSSTA, RX_PROGRESS BSF BUSSTA, RX_SUCCESS RETLW TRUE ;================================================ ; I2C initialization ;================================================ I2CBUS_INIT BCF STATUS, RP0 MOVF RC, W ANDLW 0X18 MOVWF RC CLRF BUSSTA CLRF BUSCON RETURN ;================================================ ; transfer device address ; entrance: BUSCON ; Export: BUSSTA ;================================================ TX_SLAVE_ADDR BCF STATUS, RP0 BCF BUSSTA, ACK_ERROR MOVLW SLAVEADDR MOVWF TXBUF BTFSC BUSCON, SLAVE_RW BSF TXBUF, R_NOT_W CALL I2CTXB BTFSC BUSSTA, TX_SUCCESS GOTO TXADDR_SUCCESS CLRWDT BTFSS BUSSTA, ACK_ERROR CALL I2CSTOP GOTO TXADDR_END TXADDR_SUCCESS CLRWDT TXADDR_END RETURN ;================================================ ; TX_DATA_ADDR sends the write/read address ;================================================ TX_DATA_ADDR BCF STATUS, RP0 MOVLW DATAADDRH MOVWF TXBUF CALL I2CTXB BCF STATUS, RP0 BTFSS BUSSTA, TX_SUCCESS GOTO TX_DATA_ADDR_ERROR MOVLW DATAADDRL MOVWF TXBUF CALL I2CTXB BCF STATUS, RP0 BTFSS BUSSTA, TX_SUCCESS GOTO TX_DATA_ADDR_ERROR GOTO TX_DATA_END TX_DATA_ADDR_ERROR BCF BUSSTA, TX_PROGRESS BCF BUSSTA, TX_SUCCESS BSF BUSSTA, ACK_ERROR TX_DATA_END RETURN ;================================================ ; output an 8-bit data to the EEPROM and detect the ACK signal of the EEPROM ; Entry: TXBUF register ; BUSSTA register ; Export: EEPROM memory ; BUSSTA register ;=============================================== I2CTXB BCF STATUS, RP0 BSF BUSSTA, TX_PROGRESS BCF BUSSTA, TX_SUCCESS MOVLW 0X08 MOVWF BCOUNT TXLOOP CLRWDT BSF STATUS, RP0 BCF TRISC, SCL NOP BCF TRISC, SDA BCF STATUS, RP0 RLFW TXBUF, F BSF STATUS, RP0 BTFSC STATUS, C BSF TRISC, SDA NOP BSF TRISC, SCL NOP NOP BCF STATUS, RP0 DECFSZ BCOUNT, F GOTO TXLOOP ;--------------------------------------- ; Detection is EEPROM whether there is ACK signal generated, produced as normal ; Detection method: ; 1. Set the SCL.SDA of the RC port to the output and input states respectively. ; 2. Delay 2 instruction cycles, set SCL to high level ; 3. Delay 2 instruction cycles to detect the status of RC port SDA ; 4. If it is high, set the error status, return ; 5. If it is low, after delaying 2 instruction cycles, set RC port SCL to low level and continue execution. ;--------------------------------------- BSF STATUS, RP0 BCF TRISC, SCL BSF TRISC, SDA NOP NOP BSF TRISC, SCL NOP BCF STATUS, RP0 BTFSC RC, SDA GOTO TX_ERR BSF STATUS, RP0 BCF TRISC, SCL BCF STATUS, RP0 BCF BUSSTA, TX_PROGRESS BSF BUSSTA, TX_SUCCESS BCF BUSSTA, ACK_ERROR GOTO TX_END TX_ERR BCF BUSSTA, TX_PROGRESS BCF BUSSTA, TX_SUCCESS BSF BUSSTA, ACK_ERROR TX_END RETURN ;================================================ ; read 8 bits of data from the EEPROM and send an ACK signal ; entry: EEPROM memory ; BUSCON register ; Export: RXBUF register ; BUSSTA register ;================================================ I2CRXB BCF STATUS, RP0 BSF BUSSTA, RX_PROGRESS BCF BUSSTA, RX_SUCCESS MOVLW 0X08 MOVWF BCOUNT RXLOOP CLRWDT BSF STATUS, RP0 BCF TRISC, SCL; define TRISC For output BSF TRISC, SDA; definition TRISC For input NOP NOP BSF TRISC, SCL; TRISC Output high level NOP BCF STATUS, RP0 BCF STATUS, C BTFSC RC, SDA; original instruction is BTFSCTRISC, SDA BSF STATUS, C RLFRXBUF, F DECFSZ BCOUNT, F GOTO RXLOOP ;--------------------------------------- ; send ACK signal to EEPROM ; determine whether the received byte is the last byte ; LAST_BYTE_RX is 1, is SDA send a high level, the end ; LAST_BYTE_RX is 0, not SDA sends a low ACK, continues to receive ;--------------------------------------- BSF STATUS, RP0 BCF TRISC, SCL BCF TRISC, SDA BTFSC BUSCON, LAST_BYTE_RX; check if it is the last byte BSF TRISC, SDA; is the last byte NOP; send ACK signal BSF TRISC, SCL NOP NOP NOP NOP BCF TRISC, SCL BCF STATUS, RP0 BCF BUSSTA, RX_PROGRESS BSF BUSSTA, RX_SUCCESS RETURN ;================================================ ; I2C start signal ; input: none ; Output: BUFSSTA ;================================================ I2CSTART BSF STATUS, RP0 BSF TRISC, SDA; 1US NOP; 1US BSF TRISC, SCL; 1US NOP NOP BCF TRISC, SDA NOP NOP BCF STATUS, RP0 BSF BUSSTA, BUS_BUSY RETURN ;================================================ ; I2C end signal ; input: none ; Output: BUSSTA ;================================================ I2CSTOP BSF STATUS, RP0 BCF TRISC, SCL BCF TRISC, SDA BSF TRISC, SCL NOP NOP BSF TRISC, SDA NOP BCF STATUS, RP0 BCF BUSSTA, BUS_BUSY RETURN ;================================================ ; D10@ ; cLOCkin 4MHz ; delay 10ms ;================================================ D10 MOVLW 0X0D MOVWF REG1 LOOP2 MOVLW 0XFF MOVWF REG2 LOOP1 DECFSZ REG2,f GOTO LOOP1 DECFSZ REG1,f GOTO LOOP2 RETURN ;================================================ I2CERR CLRWDT NOP NOP NOP RETURN END

Indoor Led Kiosk Eposter

Best advertising player or money making machine---Led Kiosk Xposter

This Type of indoor led Xposter also called led AD player is one of new applications for led displays. Developed from led screens, it is more suitable and friendly to operate.

Function of Xposter is as following:

Ultra slim& light weight. Installation friendly

Xposter has been engineered with latest technologies to give smoother, slimmer profile. It's crafted in beautiful anodized light weight& duralble aluminum body to make entire poster framce less than 35KGS. More portable and easier to install.


Plug and Play Media player. No Configuration.

Update your digital content in the powerfull built in media play via wifi or USB. Easy to follow on screen menu makes it absolutely simple to schedule your content and complicated configuration needed.


Front Serviceable

You'll love the speedy convenience of doing servicing of panel module replacement from front with just a magnet tool.


Easy Controll & operation

High refresh rate and 128 steps of gradation controll. No Pc required, Thus saves on cost, increases reliability and makes operations simpler.


Intelligent Management.

Xposter is pre-integrated software enables you to connect it with a PC or Android devices from a single location via rj45, wifi,3G, USD and HDMI. That makes it extremely easy to identify your display and manage settings.


Indoor Led Kiosk Eposter,Indoor Led Advertising Player,P2.5 Indoor Led Ad. Poster,Intelligent Indoor Led Advertising Player

Shenzhen Priva Tech Co., Ltd. , https://www.privaled.com