[AVR单片机] atmega64a的pc1口不可控

[复制链接]
 楼主| cxy19830603 发表于 2013-3-19 18:15 | 显示全部楼层 |阅读模式
只控制PC1口,程序如下:
#define DIN_1()      PORTC |=  (1<<PC1)   
#define DIN_0()      PORTC &= ~(1<<PC1)
void Delay(uchar c)   //Ms级延时函数,参数i:延时时间
   {
    unsigned char a,b;
        for (a = 0; a < c; a++)
        for (b = 0; b < c; b++);   
   }
void  main(void)
{
while(1)
  {
   DIN_0();
   Delay(5);
   DIN_1();
   Delay(5);
  }
}不管延时多长时间,DIN都输出低电平,将DIN_1();和DIN_0();掉换位置,又始终输出高电平,实在不知道问题出在哪?求高手帮忙,谢谢
 楼主| cxy19830603 发表于 2013-3-19 18:16 | 显示全部楼层
#define DIN_1()      PORTC |=  (1<<PC1)   
#define DIN_0()      PORTC &= ~(1<PC1)
cyanitefire 发表于 2013-3-19 20:34 | 显示全部楼层
怎么没有看到端口方向设置的语句?DDRC=0xFF;或DDRC|=(1<<PC1);
qin552011373 发表于 2013-3-20 00:20 | 显示全部楼层
缺少端口设置
 楼主| cxy19830603 发表于 2013-3-20 08:01 | 显示全部楼层
端口方向设置是
DDRC=0xFF;
PORTC=0xFF;
yklstudent 发表于 2013-3-20 09:01 | 显示全部楼层
不知道单片机是否工作了没?应该先确认这个 配置位啥的也有 看门狗啊
qin552011373 发表于 2013-3-21 22:02 | 显示全部楼层
感觉你的延时函数是有问题的   你仔细算算你那是延时多久   我感觉在us级
 楼主| cxy19830603 发表于 2013-3-28 08:24 | 显示全部楼层
问题找到了,是因为用的内部1兆的晶振,内部晶振精度低,不稳定造成的,换成外部晶振就好了。但原始问题还是没解决,不知道这个MCU在刚开始时除了熔丝位还要做什么设置?
qin552011373 发表于 2013-3-28 21:51 | 显示全部楼层
初始化
yhhsky 发表于 2013-3-30 18:46 | 显示全部楼层
wentao0100 发表于 2013-4-3 13:22 | 显示全部楼层
void Delay(uchar c)   //Ms级延时函数,参数i:延时时间
   {
    unsigned char a,b;
        for (a = 0; a < c; a++)
      {
        for (b = 0; b < c; b++);   
       }
   }
这个函数的定时时间绝对不是MS级的,如果你用uchar类型,能延时的时间更少

评分

参与人数 1威望 +6 收起 理由
qin552011373 + 6 很给力!

查看全部评分

 楼主| cxy19830603 发表于 2013-4-10 18:27 | 显示全部楼层
谢谢大家,记得avr的单片机熔丝位设置好之后,一定要下载到单片机中!
qin552011373 发表于 2013-4-10 22:27 | 显示全部楼层
cxy19830603 发表于 2013-4-10 18:27
谢谢大家,记得avr的单片机熔丝位设置好之后,一定要下载到单片机中!

说的有点不专业哈  是烧写
tanmilaoshu 发表于 2013-4-11 14:44 | 显示全部楼层
你这没有端口设置语句啊……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

11

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部