|
各位大神看看我做的智能輸液監控系統的程序哪錯了?現在還沒加控制電機模塊,只用顯示出檢測到的液滴滴速就行。但是在proteus中仿真顯示器沒反應怎么回事
;滴速定時5s得出的T1計數值再乘以12就是1分鐘的滴數,可是為什么不顯示呢?
DS:
MOV TMOD , #51H;定時器T0定時方式一,T1計數方式一(01010001)
MOV TL0 , #0B0H
MOV TH0 , #3CH;置50ms初值
MOV 20H , #100;設置循環次數100,100*50ms=5s
MOV TH1 , #00H
MOV TL0 , #000H
MOV 21H , #0
MOV 22H , #0;存放采集到的數據
SETB TR1;啟動T1
SETB TR0;啟動T0
WAIT: AJMP WAIT;等待中斷
RET
T0INT: ;定時5s產生中斷
DJNZ 20H , NEXT1
CLR TR1;關閉T1
CLR TR0;關閉T0
MOV 21H , TL1
MOV 22H , TH1
ACALL DISPLAY
AJMP EXIT
NEXT1: MOV TL0 , #0B0H
MOV TH0 , #3CH;繼續定時
EXIT: RETI;顯示
DISPLAY:
MOV A , 21H;取5s計數值
MOV B , #10;16進制轉換為10進制
DIV AB;A/B的商存入A,余數存入B
MOV R1 , A;R1存放十位數
MOV R2 , B;R2存放個位數
ADD B , R2;相當于B*2
MOV R2 , B
ADD B , R2;相當于B*4
MOV R2 , B
ADD B , R2;相當于B*8
ADD B , R2;相當于B*12
ADDC A , R1;相當于A*2
MOV R1 , A
ADDC A , R1;相當于A*4
MOV R1 , A
ADDC A , R1;相當于A*8
ADDC A , R1;相當于A*12
MOV R1 , A;此時R1存放以分為單位的十位數
MOV R2 , B;此時R2存放以分為單位的個位數
MOV R3 , #50;設導通頻率為50
LOOP1:MOV A , R2;取個位數
ACALL CHANG;調用顯示
CLR P2.1;開個位顯示
ACALL DLY10ms;調用延時10ms程序
SETB P2.1;開關個位顯示
MOV A , R1;取十位數
ACALL CHANG;調用顯示
CLR P2.0;開十位顯示
ACALL DLY10ms;調用延時10ms程序
SETB P2.0;開關十位顯示
RET
CHANG:MOVC A , @A+DPTR;取表子程序
MOV P0 , A
RET
DLY10ms:
MOV R6 , #20
D1:
MOV R7 , #248
DJNZ R7 , $
DJNZ R6 , D1
RET;延時返回
TABLE:DB 0C0H,0F9H,0A4H,0B0H
DB 99H,92H,82H,0F8H
DB 80H,90H,88H,83H
DB 0C6H,0A1H,86H,8EH
RET;液位
|
|