請高手看看我做的實驗臺的數據采集系統,看看下面的程序哪里有問題??????? 圖一,為硬件電路圖, 圖二,為計算機方面的軟件界面(用VB做的)
;======================
; 設置波特率
;======================
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
看看啥好東西
為什么不用c的?找結構很麻煩。就是一個稱重傳感器的定時采集和通過rs232的pc通信
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |