标题:
STC15W408单片机BCD码控制15台电机的程序问题
[打印本页]
作者:
XU6238
时间:
2018-7-10 08:27
标题:
STC15W408单片机BCD码控制15台电机的程序问题
求高手帮我看看,有什么问题。由P1口低4位送入BCD码,P2、P3输出控制15台电机。采用STC15W408。单片机程序如下
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp,key;
/*uchar code table[]={
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,0xff}; */
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
P3=0xff;
P2=0xff;
// P1=0xff;
while(1)
{
P3=0xff;
P2=0xff;
// P1=0xff;
temp=P1;
if(temp!=0xff)
{
delayms(20);
temp=P1;
if(temp!=0xff)
{
temp=P1;
switch(temp)
{
case 0x01:
P3=0xfe;
break;
case 0x02:
P3=0xfd;
break;
case 0x03:
P3=0xfb;
break;
case 0x04:
P3=0xf7;
break;
case 0x05:
P3=0xef;
break;
case 0x06:
P3=0xdf;
break;
case 0x07:
P3=0xbf;
break;
case 0x08:
P3=0x7f;
break;
case 0x09:
P2=0xfe;
break;
case 0x0a:
P2=0xfd;
break;
case 0x0b:
P2=0xfb;
break;
case 0x0c:
P2=0xf7;
break;
case 0x0d:
P2=0xef;
break;
case 0x0e:
P2=0xdf;
break;
case 0x0f:
P2=0xbf;
break;
}
while(temp!=0xff)
{
temp=P1;
}
P2=0xff;
P3=0xff;
}
}
}
}
复制代码
作者:
ahshmj
时间:
2018-7-10 09:52
你的BCD编码器是什么类型的?怎么接的(低电位有效与否)?
“ P1=0xff;”为什么要注释掉?读端口状态之前,要先向端口锁存器写“1”(置高电平)。
作者:
ahshmj
时间:
2018-7-10 09:54
本帖最后由 ahshmj 于 2018-7-10 10:03 编辑
其他的地方没有看完,你应该把重点说出来,这么长的程序一点点的分析一点点的看,还真没那么多的功夫。
作者:
XU6238
时间:
2018-7-10 10:15
BCD来自红外接收,高电平有效,经反向后为送P1口低4位
作者:
XU6238
时间:
2018-7-10 10:18
注释掉P1=0xff,只是要看看什么结果,应该恢复
作者:
单片机小小小
时间:
2018-7-10 10:25
可以找个模拟软件试一下
作者:
liaomi_520
时间:
2018-7-10 11:04
感觉没有什么问题,你的现象出现在哪里?
作者:
11111cj
时间:
2018-7-10 11:49
说重点,没时间一点点分析
作者:
XU6238
时间:
2018-7-10 15:04
读不出数据
作者:
XU6238
时间:
2018-7-10 15:07
调试时总是在1,2,3循环
P3=0xff;
P2=0xff;
// P1=0xff;
while(1)
{
1 P3=0xff;
2 P2=0xff;
3 P1=0xff;
temp=P1;
if(temp!=0xff)
作者:
XU6238
时间:
2018-7-11 07:47
还是用不了,拜托高手指点
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1