这是我用ATMEGA162仿真的数码管为什么不能运行求解答

2019-07-18 11:57发布

[url=]图片[/url]
程序如下
#include <avr/io.h>
#include <stdio.h>
int  SH_CP=PC0;
int  DS=PC1;
int  ST_CP=PC2;
int  SHU1=PC3;
int  SHU2=PC4;
int  SHU3=PC5;
int  SHU4=PC6;
int tab[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void delay()
{  
        int i,j,k;
        for(k=0;k<1;k++)
        for(i=0;i<50;i++)
        for(j=0;j<10;j++);
}


void Ser_IN(unsigned char Data)
{

        int j,i;
        for(i = 0; i < 8; i++)
        {
                PORTC&=~(1<<SH_CP);
                j = (int)((Data & 0x80)/128);                       
                if(j==0)
                PORTC&=~(1<<DS);
                if(j==1)
                PORTC|=(1<<DS);
                Data <<= 1;
                PORTC|=(1<<SH_CP);
        }
}


void Par_OUT(void)
{
        PORTC&=~(1<<ST_CP);
        PORTC|=(1<<ST_CP);
}

void ShuMa(int BianMa)
{
                int i=0;
                PORTC|=(1<<SHU4);
                i=BianMa/1000;
                PORTC&=~(1<<SHU1);
                Ser_IN(tab);
                Par_OUT();
                delay();

                PORTC|=(1<<SHU1);
                i=BianMa/100%10;
                PORTC&=~(1<<SHU2);
                Ser_IN(tab);
                Par_OUT();
                delay();

                PORTC|=(1<<SHU2);
                i=BianMa/10%10;
                PORTC&=~(1<<SHU3);
                Ser_IN(tab);
                Par_OUT();
                delay();

                PORTC|=(1<<SHU3);
                i=BianMa%10;
                PORTC&=~(1<<SHU4);
                Ser_IN(tab);
                Par_OUT();
                delay();
}

main()
{       
        int k;
        PORTC=0x00;

        k=4192 ;
while(1)
        {       
                ShuMa(k);       
        }
}
我刚刚接触到AVR的单片机
        PORTC&=~(1<<ST_CP);对pc2输出0
        PORTC|=(1<<ST_CP);对pc2 输出1

我自己编译了 感觉没有任何问题
而且这段程序是我从51单片机程序改过来的
51上仿真没有任何问题求帮助。。谢谢了


QQ截图20150621164302.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
fofot1122
1楼-- · 2019-07-19 08:35
武力戡乱 发表于 2015-6-24 12:41
控制IO方向。
亲,是不是当51来用了!avr的io默认只有输入功能,不要控制寄存器才能输出,而51的c语言里面只要给1就可以输出弱高,并且此时可以做输入。

( ⊙o⊙ )哇。。。我错了  好像还真有这么会事,谢谢我在研究研究。
fofot1122
2楼-- · 2019-07-19 09:57
 精彩回答 2  元偷偷看……
武力戡乱
3楼-- · 2019-07-19 10:10
fofot1122 发表于 2015-6-24 13:48
( ⊙o⊙ )哇。。。我错了  好像还真有这么会事,谢谢我在研究研究。

一周热门 更多>