各位坛友大家好,我是新手,刚开始学单片机,想从汇编入手,看了一些书,目前正在试着写小的程序玩玩。
今次,用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一直出低电平。
实在是想不明白这错在哪里。。。。。
|