二极管不亮的问题。。
ORG 0000H
START:CLR P1.0
LCALL DELAY
SETB P1.0
LCALL DELAY
LJMP START
DELAY: MOV R5,#20
D1:MOV R6,#20
D2:MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END
p1.0口接470欧姆电阻,然后接了一个二极管,根据以上程序,二极管应该一亮一灭,,为什么没有反应。
我刚学,。
看一下电路有没有问题,如果是高电平亮,那直接在IO口上接上3.3V的电压,看亮不,如果是低,那就直接在IO接上地;硬件与元件上没有问题再检查软件问题,一一排除
软件上,直接先给高电平,看灯是否会亮,从简单的先来
p1.0口接的电阻,然后二极管,然后是5V电压,给低电平亮的,。我在软件上写CLR p1.0了,灯还是不亮。而且那个闪烁的程序,没有输出。是程序的问题么。
你直接用电表测一下IO口,看是不是低电平
大神。我知道怎么回事了。我用的C8051F040。要初始化后才能用。我没有初始化。
初始化后好用了。
今天我把P5.7口放一个摁键,程序改成这样
START:JB P5.7,$
CLR P1.0
LCALL DELAY
SETB P1.0
LCALL DELAY
摁键根本不起作用..还是一直响。不是摁下摁键低电平才有效才响么。
什么响?如果P5.7一直是高的话,那会一直执行JB P5.7,$这条语句的,你自己再查一下
是这样的,TURN_ON:JB P5.7,$
CLR P1.0
LCALL DELAY
SETB P1.0
LCALL DELAY
LJMP TURN_ON
DELAY: MOV R6,#20
D1: MOV R7,#70
DJNZ R7,$
DJNZ R6,D1
RET
用这个程序,P5.7口接摁键,P1.0口接无源蜂鸣器,只要摁键摁住,给低电平,蜂鸣器就要一直响,否则不响
但是 JB P5.7,$根本不起作用,程序写进去后蜂鸣器就开始响,摁键还没摁
按你的情况来看,你先测一下在没有按下按键时,P1.0口的电平,看是否为低?可能你的P1.0在没有操作的情况下都是低电平的
我在开始的时候 设置SETB P1.0
ORG 009BH
SETB P1.0
TURN_ON:JB P5.7,$
CLR P1.0
LCALL DELAY
SETB P1.0
LCALL DELAY
LJMP TURN_ON
DELAY: MOV R6,#20
D1: MOV R7,#70
DJNZ R7,$
DJNZ R6,D1
RET
END
就是这样。一直响。P1.0设置高电平也不行
不是的,我想表达的意思是,不是你程序是不是拉低了,面是你那个IO口是不是本身就是低电平来的,比如那个IO口设置或是本身就下拉到地,那么,你程序怎么写都没用的,所以,直接用万用表测一下
用万用表怎么打,,,
直接测电压,打到V档
大神,问题解决了,原因是因为C8051F040的P4.5.6.7口都要进行页面设置,用到MOV,SFRPAGE,#0FH 和MOV,SFRPAGE,#00H语句在设置端口,
单片机是我新学的,这个芯片功能有点强大,,新学的不适合用这个把。
大神,,看下这个。我想让无源蜂鸣器出现高音低音两种声音,,定时计数器那我还没看懂,
就用这种方法做的,,出来的声音为什么是一响一不响的声音,,
TURN_ON:MOV SFRPAGE,#0FH
JB P5.5,$
MOV SFRPAGE,#00H ;对P5.5口页面设置使用
CLR P1.0
LCALL DELAY
SETB P1.0
LCALL DELAY ;使蜂鸣器高音震动
LJMP DELAY_T ;延长一段时间
LOWS:
CLR P1.0
LCALL DELAY_L
SETB P1.0
LCALL DELAY_L ;使蜂鸣器低音震动
LJMP DELAY_T ;延长一段时间
DELAY: MOV R6,#20
D1: MOV R7,#100
DJNZ R7,$
DJNZ R6,D1
RET ;高音震动程序
DELAY_T: MOV R5,#40
D2: MOV R4,#500
D3: MOV R3,#500
DJNZ R3,$
DJNZ R4,D3
DJNZ R5,D2
RET ;延时程序
DELAY_L: MOV R2,#20
D4: MOV R1,#50
DJNZ R1,$
DJNZ R2,D4
RET ;低音震动程序
是逻辑问题么。
