ADSll10自校準(zhǔn)模數(shù)轉(zhuǎn)換器在稱(chēng)重中的應(yīng)用
3 軟件設(shè)計(jì)
按照硬件電路,采用匯編語(yǔ)言編程,在KeilA51 V8.50環(huán)境下調(diào)試通過(guò),并成功應(yīng)用在單片機(jī)稱(chēng)重系統(tǒng)中。軟件按功能模塊,主要由LCD顯示控制、ADslllO模數(shù)轉(zhuǎn)化、超負(fù)荷報(bào)警檢測(cè)、采集數(shù)據(jù)處理、鍵盤(pán)中斷等子程序構(gòu)成。此處側(cè)重介紹ADSlll0模數(shù)轉(zhuǎn)換程序。程序代碼如下:
;定義P3.O腳為時(shí)鐘SCI,P3.1腳為數(shù)據(jù)SDA
SDA BIT P3.1 ;定義數(shù)據(jù)
SCL BIT P3.O ;定義時(shí)鐘
;配置寄存器子程序
SEND:ACALL START;主機(jī)發(fā)送開(kāi)始條件
MOV A,#10010000B ;發(fā)送ADSlll0地址(末位為O表示寫(xiě))
ACALL S_BIT
ACALL G_ASK
JC STOP1 ;如果應(yīng)答失敗,結(jié)束通信
MOV A,#l0011100B;工作在單周期模式
ACALL S_BIT
ACALL G_ASK
STOP1: ACALL STOP
RET
;接收一次轉(zhuǎn)換值(3字節(jié))子程序
READ:ACALL START;主機(jī)發(fā)送開(kāi)始條件
MOV A,#10010001B;發(fā)送ADSlllO地址(末位為1表示讀)
ACALL S_BIT
ACALL G_ASK
JC STOP2 ;如果應(yīng)答失敗,結(jié)束通信
ACALL READBYTE
MOV R7,A ;高字節(jié)存在R7中
CLR SDA ;發(fā)送應(yīng)答脈沖
NOP
NOP
SETB SCL
NOP
NOP
CLR SCL
ACALL READBYTE
MOV R6,A ;低字節(jié)存在R6中
CLR SDA ;發(fā)送應(yīng)答脈沖
NOP
NOP
SETB SCL
NOP
NOP
CLR SCL
ACALL READBYTE
MOV R5,A ;配置寄存器數(shù)據(jù)存在R5中
CLR SDA ;發(fā)送應(yīng)答脈沖
NOP
NOP
SETB SCL
NOP
NOP
CLR SCL
STOP2: ACALL STOP
RET
;I2C開(kāi)始子程序
START:SETB SDA
SETB SCL
NOP
NOP
CLR SDA
NOP
NOP
CLR SCL
NOP
NOP
RET
;I2C停止子程序
STOP:CLR SDA
SETB SCL
NOP
NOP
SETB SDA
NOP
NOP
CLR SCL
NOP
NOP
RET
;I2C檢測(cè)應(yīng)答子程序
評(píng)論