各位壇友大家好,我是新手,剛開始學單片機,想從匯編入手,看了一些書,目前正在試著寫小的程序玩玩。
今次,用STC89C52來控制一個DAC的輸入通道選擇。發現程序實際運行和我想的不同,程序如下:
;主程序:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV P2,#00H;
MOV P1,#00H;
SETB P1.0;蜂鳴器響
LCALL D100;
CLR P1.0;
LCALL D25;
SETB P1.0;
LCALL D100;延時子程序為100ms,要讓蜂鳴器響200MS,就調用延時子程序2次
CLR P1.0;蜂鳴器停
SETB P2.7;輸入選擇為COX1
;延時100mS子程序:
D100: MOV R7,#200;
D1:MOV R6,#250;
D2:DJNZ R6,D2;
DJNZ R7,D1;
RET
D25: MOV R7,#50;
D3:MOV R6,#250;
D4:DJNZ R6,D4;
DJNZ R7,D3;
RET
END
我的想法是上電后先將P2和P1口全部設為低電平,然后蜂鳴器“嘀-嘀”響2聲。然后將P2.7置為高電平,打開通道1.
現在的實際情況是:蜂鳴器“嘀-嘀”響2聲后 P1.0一直出高電平, P2.7一直出低電平。
實在是想不明白這錯在哪里。。。。。
|