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