請(qǐng)高手看看我做的實(shí)驗(yàn)臺(tái)的數(shù)據(jù)采集系統(tǒng),看看下面的程序哪里有問(wèn)題??????? 圖一,為硬件電路圖, 圖二,為計(jì)算機(jī)方面的軟件界面(用VB做的)
1.jpg (120.87 KB, 下載次數(shù): 99)
下載附件
2009-10-30 19:33 上傳
未命名.jpg (171.23 KB, 下載次數(shù): 82)
下載附件
2009-10-30 19:33 上傳
;====================== ; 設(shè)置波特率 ;====================== ORG 0000H AJMP MAIN ORG 0003H AJMP ADZD MAIN: MOV TMOD,#20H ;令定時(shí)器1工作于模式2 MOV TH1,#0FDH MOV TL1,#0FDH ;設(shè)定計(jì)數(shù)值,令波特率為9600 SETB TR1 ;啟動(dòng)定時(shí)器1 SETB IT0 ;為邊沿觸發(fā)方式 SETB EA ;開(kāi)中斷 SETB EX0 ;允許中斷 ;====================== ; 接收數(shù)據(jù) ;====================== MOV SCON,#70H ;設(shè)定串行端口為模式1 LOOP: CLR RI ;清除接收中斷標(biāo)志位(開(kāi)始接收數(shù)據(jù)) JNB RI,$ ;等待數(shù)據(jù)接收完畢
;====================== ; 判斷哪個(gè)按鈕被按下 ;====================== MOV A,SBUF ;接收到的數(shù)據(jù)(即代碼)存入A內(nèi)
NEXT1: CJNE A,#'1',NEXT0 ;若代碼為1(即“開(kāi)始”按鈕被按下) AJMP ADZH ;則調(diào)用AD轉(zhuǎn)換模塊
NEXT0: CJNE A,#'0',DONT ;若代碼為0(即“復(fù)位”按鈕被按下) AJMP ALLOFF ;則跳去執(zhí)行ALLOFF
DONT: AJMP LOOP ;重復(fù)執(zhí)行程序
;==================================================== ; 執(zhí)行相應(yīng)的程序 ;====================================================
;AD轉(zhuǎn)換模塊 ADZH: MOV R0,#30H ;存數(shù)據(jù)首地址 SETB P3.7 ;經(jīng)與非門(mén)后使R/C=0 CLR P3.6 ;經(jīng)與非門(mén)后使CE=1 MOV DPTR,#3FFFH ;使AO=0,CS=0,啟動(dòng)12位轉(zhuǎn)換 MOVX @DPTR,A ;啟動(dòng)AD轉(zhuǎn)換 HERE: AJMP HERE ;等待中斷 ADZD: PUSH PSW PUSH DPH PUSH DPL PUSH ACC ;保護(hù)現(xiàn)場(chǎng) CLR P3.7 ;經(jīng)與非門(mén)后使R/C=1 MOV DPTR,#3FFFH ;允許高8位并行輸出(CS=0,R/C=1,AO=0) MOVX A,@DPTR ;讀高8位 MOV @R0,A ;高8位存入RAM單元 MOV DPTR,#7FFFH ;允許低4位加上4個(gè)0輸出(CS=0,R/C=1,AO=1) MOVX A,@DPTR ;讀低4位 ANL A,#0FH ;屏蔽高4位隨機(jī)數(shù)據(jù) INC R0 ;數(shù)據(jù)地址加1 MOV @R0,A ;存低4位 POP ACC ;恢復(fù)現(xiàn)場(chǎng) POP DPL POP DPH POP PSW RETI AJMP SENDON
;復(fù)位按鈕的相應(yīng)程序 ALLOFF: MOV P0,#00H ;數(shù)據(jù)清零 AJMP SENDALL ;發(fā)送代碼1
;==================================================== ; 發(fā)送數(shù)據(jù) ;==================================================== ;發(fā)送代碼0 SENDALL: CLR TI ;清除發(fā)送中斷標(biāo)志位(準(zhǔn)備發(fā)送數(shù)據(jù)) MOV SBUF,#'0' ;發(fā)送代碼2 JNB TI,$ ;等待數(shù)據(jù)發(fā)送完畢 AJMP LOOP ;重復(fù)執(zhí)行程序
;發(fā)送代碼1 SENDON: CLR TI MOV SBUF,#'1' JNB TI,$ AJMP LOOP
END
[此貼子已經(jīng)被admin于2009-10-31 14:32:33編輯過(guò)]
|