日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀] 本程序已經(jīng)穩(wěn)定使用很長一段時間了,如果非要追根求源,應(yīng)該追溹到1998年,由于本系統(tǒng)是基于IICEEPROM的,故對2401的讀寫采用了阻塞的方式,讀不到數(shù)據(jù)或?qū)懖蝗霐?shù)據(jù)就不退出。本程序是基于447的,也在1

本程序已經(jīng)穩(wěn)定使用很長一段時間了,如果非要追根求源,應(yīng)該追溹到1998年,由于本系統(tǒng)是基于IICEEPROM的,故對2401的讀寫采用了阻塞的方式,讀不到數(shù)據(jù)或?qū)懖蝗霐?shù)據(jù)就不退出。


本程序是基于447的,也在163上運行過,不過IO的初始化操作需要作些修改,其他可以完全不用修改。

程序開頭的幾行ADD A,@0xFF是非常有用的,在以后的文章中會有描述。


程序如下:

;SYSTEM CLOCK 4MHz
;IO port define
SDA == 4
SCL == 3

MSDA == 0
MSCL == 1
MCS == 2
MRST == 5

;Register define
TREG == 0X10
TCNT == 0X11
GCNT == 0X12

IICADDR == 0X1E
IICBUF == 0X28
IICDAT0 == 0X28
IICDAT1 == 0X29
IICDAT2 == 0X2A
IICDAT3 == 0X2B
IICDAT4 == 0X2C
IICDAT5 == 0X2D
IICDAT6 == 0X2E
IICDAT7 == 0X2F

INCLUDE "EM78P447S.H"

ORG 0X000
ADD A,@0XFF
ADD A,@0XFF
ADD A,@0XFF
ADD A,@0XFF
ADD A,@0XFF

START:
DISI
SET P6 P7 PULL UP EN
CONTR
MOV TREG,A
BC TREG,7
MOV A,TREG
CONTW
SET SCL SDA OUTPUT HIGH
MOV A,@0XFF
MOV TREG,A
BC TREG,SCL SCL OUTPUT
BC TREG,SDA SDA OUTPUT
MOV A,TREG
IOW IOC6
BS R6,SCL SCL HIGH
BS R6,SDA SDA HIGH

;********************************************************************
;讀入的測試程序,讀取2401的0x00~0x07地址內(nèi)容
READ_2401:
MOV A,@0X00
MOV IICADDR,A
CALL IIC_R8BYT
RET

;********************************************************************
;寫入的測試程序,向2401的0x00~0x07地址寫入0x00
WRITE_2401:
MOV A,@0X00
MOV IICADDR,A
CLR IICDAT
CLR IICDAT
CLR IICDAT
CLR IICDAT
CLR IICDAT
CLR IICDAT
CLR IICDAT
CLR IICDAT
CALL IIC_W8BYT
RET

;********************************************************************
;與MicroChip的2401接口程序
;********************************************************************
;IIC_W8BYT,向2401的指定地址寫入8個字節(jié)數(shù)據(jù)
;地址由IICADDR指定,數(shù)據(jù)存在IICDAT0~I(xiàn)ICDAT7
IIC_W8BYT:
CALL IIC_START
MOV A,@0XA0
CALL IIC_WBYT
CALL IIC_CACK
JBC R3,GP IF GP=1 OPTION AGAIN
JMP IIC_W8BYT
MOV A,IICADDR
CALL IIC_WBYT
CALL IIC_CACK
JBC R3,GP IF GP=1 OPTION AGAIN
JMP IIC_W8BYT
WRITE 8 BYTES TO 24C01
MOV A,@IICBUF
MOV R4,A
MOV A,@8
MOV GCNT,A
IIC_W8BYT1:
MOV A,R0
INC R4
CALL IIC_WBYT
CALL IIC_CACK
JBC R3,GP IF GP=1 OPTION AGAIN
JMP IIC_W8BYT
DJZ GCNT
JMP IIC_W8BYT1
CALL IIC_STOP
RET

;********************************************************************
;IIC_W1BYT,向2401的指定地址寫入1個字節(jié)數(shù)據(jù)
;地址由IICADDR指定,數(shù)據(jù)存在IICDAT0
IIC_W1BYT:
CALL IIC_START
MOV A,@0XA0
CALL IIC_WBYT
CALL IIC_CACK
JBC R3,GP IF GP=1 OPTION AGAIN
JMP IIC_W1BYT
MOV A,IICADDR
CALL IIC_WBYT
CALL IIC_CACK
JBC R3,GP IF GP=1 OPTION AGAIN
JMP IIC_W1BYT
WRITE 1 BYTES TO 24C01
MOV A,@IICBUF
MOV A,IICDAT0
CALL IIC_WBYT
CALL IIC_CACK
JBC R3,GP IF GP=1 OPTION AGAIN
JMP IIC_W1BYT1
CALL IIC_STOP
RET

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉