标题:
关于STC89C52RC单片机的P1口输出
[打印本页]
作者:
Egr
时间:
2019-11-9 15:33
标题:
关于STC89C52RC单片机的P1口输出
单片机设计,在一个简单的用P1口输出数据上出了问题,百思不得其解,烦请各位前辈高手帮忙指正下哪里做得不对哈,谢谢~
方便起见就把程序里这个部分单拿出来了,下面是代码:
#include <reg52.h>
#include <intrins.h>
void main()
{
unsigned char i;
while(1)
{
for(i=0;i<16;i++)
P1=i;
}
}
复制代码
非常简单的一段代码……电路图里将P1的低四位依次和74HC154的地址线相连,目的是让154依次选中Y0~Y15。但是生成HEX文件放到Proteus里仿真时完全不对,输出到154地址线上的数据变成0111,1110,0000,0101,1100,1011,1110... 看不出规律,都乱套了
作者:
csmyldl
时间:
2019-11-9 17:37
给出的程序没有问题,不妨就编译此程序进行调试,电路依然是那个电路,再去观察P1口的变化
作者:
bh2030693
时间:
2019-11-9 18:22
程序中有没有时间间隔?例如:
for (i = 0; i < 16; i++) {
P1 = i;
Delay_ms(500);
}
复制代码
另外说句题外话,写代码还是规范好,大括号建议不要省略。
作者:
Egr
时间:
2019-11-9 18:38
csmyldl 发表于 2019-11-9 17:37
给出的程序没有问题,不妨就编译此程序进行调试,电路依然是那个电路,再去观察P1口的变化
emmm,请问怎样编译来调试呢,keil里不是点了编译就得到了hex文件吗
作者:
wulin
时间:
2019-11-9 19:21
本帖最后由 wulin 于 2019-11-10 06:48 编辑
单从楼主写的这段代码看没有什么问题,如果实际应用程序中P1高4位端口还有其它用途,就要对P1作字节操作,保持高4位端口状态不变。
#include <reg52.h>
void main()
{
unsigned char i;
P1=0xff;
for(i=0;i<16;i++)
{
P1&=0xf0;
P1|=i;
}
while(1);
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1