;各位大侠请指导一下,这是一个流水灯程序,但没有办法控制P3.7不知道是什么原因? ;我用的是恒坚电器的一款开发板原理图,自己搭建的一个目标板,源程序则是恒坚提供的。 ;软件是Keil uVision 3 Demo, 仿真头是用SST的芯片做的。 ;灯是接的P1口,当P1口为低电平时灯点亮, ;蜂鸣器是P3.7控制的,P3.7为高电平时控制一个三极管的基极,该三极管发射极接地,集电极接蜂鸣器的“—”,蜂鸣器的“+”接+5V。 ;现在的问题是怎么弄蜂鸣器都不响,P3.7总是为0。
beep bit p3.7;
led1 bit p1.0; led2 bit p1.1; led3 bit p1.2; led4 bit p1.3; led5 bit p1.4; led6 bit p1.5; led7 bit p1.6; led8 bit p1.7;
org 00h;
jmp main; org 30h;
main: mov sp, #30h; lcall reset; lcall pro_led; jmp main;
reset: mov a,#00h; mov b,#00h; mov p0,#0; mov p1,#255; mov p2,#255; clr beep; 就算这里改成setb beep ,p3.7依然是0。 ret;
pro_led: setb led1; clr led8; setb beep; 在keil里面单步运行这项后,p3.7还是低电平,在P3口的监视窗口中这一位也是显示为0,而P3.6~P3.0为1。 lcall delay; clr beep; setb led2; clr led1; lcall delay; setb led3; clr led2; lcall delay;
setb led4; clr led3; lcall delay;
setb led5; clr led4; lcall delay; setb led6; clr led5; lcall delay;
setb led7; clr led6; lcall delay; setb led8; clr led7; lcall delay;
again: setb led7; clr led8; lcall delay; setb led6; clr led7; lcall delay; setb led5; clr led6; lcall delay;
setb led4; clr led5; lcall delay;
setb led3; clr led4; lcall delay; setb led2; clr led3; lcall delay;
setb led1; clr led2; lcall delay; ret;
delay: push psw clr psw.3 setb psw.4
mov r0,#2 mov r1,#250 mov r2,#2
dl1: djnz r0,dl1 mov r0,#250 dl2: djnz r1,dl1 mov r0,#240 mov r1,#248 dl3: djnz r2,dl1 nop pop psw ret
end
|