㈠ STC89C52单片机串行通信异常
你的串口调试助手发送的1,2,3是ASCII码,而你的程序里判断是二进制数(表面上是十进制,但内部要变成二进制数),所以,二者不能比较的。
方法一,发送时直接发送二进制,在发送设置下面选中Hex,而你现在选的是ASCII
方法二,发送ASCII码时,程序中判断时也要用ASCII码来判,即要加''
例如:
if(a=='1') //注意加单引号
flag1=1;// flag1无法改变,始终为0
if(a=='2') //注意加单引号
flag1=2;
if(a=='3') //注意加单引号
flag1=3;
㈡ 单片机程序运行后数码管显示异常
main()
{
ucharnum=0;
key_add=1;
key_del=1;
while(1){
HuanCun[0]=DuanMa[num%10];//查表
Display();
if(!key_add){//检测按键是否按下
Display();
if(!key_add){//再次检测按键是否按下
while(!key_add);//检测按键是否松开
if(num<9)num++;
}
}
if(!key_del){
Display();
if(!key_del){
while(!key_del);
if(num>0)num--;
}
}
}
}
㈢ 单片机连不上电脑怎么办
有的质量差的,识别有一定问题,这次能下载,下次有不能下载了。淘一个好的USB-ISP或者自己动手做一个,网络都有教程,用ATMEG8做
㈣ 单片机虚拟平台V2.0遇到致命错误是怎么回事
如果说遇到了致命的错误的话,可以通过相关设置里面找到对你的标准这样的话就可以通过里面找到对那些说明,一般情况下的话各方面的代码都是可以通过手动添加的方式进行移送。
㈤ 51单片机代码编译正常,Proteus仿真无错误提示但工作异常怎么回事
你的端口定义都不对啊;
㈥ 单片机故障
多插拔几次看看,有可能是接触不好.另外看有没有插反
㈦ 单片机之间串口通信异常
产品测:9600,e,8,2, 单片机测:9600,N,8,1
这很明显两者的通信模式不同,当然就不能正常通信了,产品的通信模式是两位停止位,可单片机只能有一位停止位,那个校验位,对于单片机倒是可以做到,可停止位不好解决。产品的通信模式能不能设置,最好设置成1位停止位。
㈧ 51单片机程序运行异常
void pause0() interrupt 0
{
TR0=0; //你在外部中断0中把定时器0禁止了,退出外部中断后,没有开启。
}
/*****************************************************************
你可以这样写,第一次进入外部中断关闭定时器0,
第二次进入外部中断就打开定时器0,然后循环,如下!
*******************************************************************/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar aa,num;
bit temp=0; //用于存储进入外部中断的标志,第一次进入后取反为1
void main()
{
while(1)
{
TMOD=0x01;
EA=1;
EX0=1;
ET0=1;
IT0=1; //这时改为下降沿触发中断
TR0=1;
aa=0xfe;
P1=aa;
while(1)
{
if(num==20)
{
num=0;
aa=_crol_(aa,1);
P1=aa;
}
}
}
}
void timer0() interrupt 1
{
TH0=0x3C;
TL0=0xB0;
num++;
}
void pause0() interrupt 0
{
temp = ~temp;
if(temp)TR0=0;
else TR0=1;
}
㈨ 单片机常见故障及处理
一些单片机常见问题的解决办法
工作和生活中会遇到许许多多的问题,可能让你一时陷于其中,但是总有解决的办法。随时记下遇到的问题,并做好总结,一方面有助于积累,另一方面也避免同一次错误再犯。
1.PIC12F629仅有一个中断入口,要避免多个中断引发的冲突。
2.引脚电平变化触发中断,和外部INT中断,在总中断GIE清零的时候,不会进入中断程序执行。
3.单片机进入休眠时,要唤醒,常常使用引脚电平变化中断或者外部INT中断。若是前者,按键按下时会唤醒,按键抬起时也会唤醒。如果这个时候还有别的中断,如初始化了定时器,GIE置位了,两种中断就会冲突
4.如果PIC单片机的I/O口作为输入引脚使用,初始化时必须要关比较器,否则,不会响应。
5.看门狗溢出会导致单片机从休眠中醒来。
6.使用PT2262和单片机做发射端时,如果用电池,要做到最省电。正常时,单片机休眠,PTT2262不上电,可以用三极管控制PTT2262的电源端,仅在发射时上电一次。
7.315MHZ的调幅电路中,选频电感可以使用模压电感,也可以自己绕,当然最好使用一端环形PCB铜线。
8.315Mhz的收发天线长度计算公式:L=1/4波长;而波长=3.0*10^8/315Mhz 算出 最佳匹配天线约25cm,可以使用拉杆天线,当然在PCB上用一段长的粗线也可以。
9.接收端使用的是超再生接收电路,网络上普遍流传的那张图纸被人原搬下来后,可以使用,我也剽窃了一次,希望也可以。要想看懂,真不容易。
10.P沟道的MOS管能不用就不用,价格昂贵不说,导通电阻大,功耗大,单片机输出0时很容易打开,但是输出1时,如果MOS管源极接的是高于单片机高电平的电压,是关不断的,需要借助三接管关断。
10.把过孔设成外径0.4mm,孔径0.2mm理论上可以,但是有人告诉我PCB加工厂可能做不出来,但我觉的问题不大
11.调试时一定要有耐心。沉住气,多反思,没有谁一下子就会成功,之前都会失败很多次。想不通时把问题说出来,旁观者清,别人可以给你启示。