51單片機—再論IIC—軟件通用包(匯編、c語言)—03
1)發(fā)送一字節(jié)數(shù)據(jù)WR_BYTE
該子程序是向虛擬的IIC總顯得數(shù)據(jù)線SDA上發(fā)送一字節(jié)數(shù)據(jù)的操作。調(diào)用該子程序前,將要發(fā)送的數(shù)據(jù)送入A中。
還是先匯編,然后c代碼:
;-----------------------------------------------------------------
;發(fā)送字節(jié)子程序
;字節(jié)數(shù)據(jù)放入ACC
;每發(fā)送一個字節(jié)筪掉用一次CACK(檢測應答子程序),取應答位
WR_BYTE:
W_LP:
W_LP1:
W_R1:
W_R0:
//----------------------------------------------------------------------
//寫一個字節(jié)函數(shù)
void send_byte(uchar c)
{
}
2)接收一字節(jié)數(shù)據(jù)RD_BYTE(這個的匯編感覺并不肯定,有可能有錯~~,當然c語言還是沒問題的,呵呵)
;----------------------------------------------------------------------
;讀取字節(jié)子程序
;讀出的值再ACC中
;每取一個字節(jié)要發(fā)送一個應達或者非應答信號(要知道你讀取就成了從機,就要發(fā)送一個信號告訴主機)
RD_BYTE:
R_LP:
//------------------------------------------------------------------------
//接收一個字節(jié)函數(shù)
//返回接收的8位數(shù)據(jù)
uchar rec_byte()
{
}
3)向被控器件發(fā)送n個字節(jié)數(shù)據(jù)子程序MCU_WRN_BYTE
;-----------------------------------------------------------------------
;向器件指定地址寫入N個數(shù)據(jù)
;入口參數(shù):器件從地質SLA,器件子地址SUBA、發(fā)送數(shù)據(jù)緩沖區(qū)MTD、發(fā)送字節(jié)數(shù)NUMBYTE
;占用:A,R0,R1,R3,CY
MCU_WRN_BYTE:
WRN_DA:
RET_WRN:
評論