[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上仿真没有任何问题求帮助。。谢谢了
-
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
让我很不习惯所以我使用上面的方法。
DDRA = 0xFF;
PORTA = 0;
PORTA = 0;就是对PA口8位全部赋值为0
DDRA是什么啊
控制IO方向。
亲,是不是当51来用了!avr的io默认只有输入功能,不要控制寄存器才能输出,而51的c语言里面只要给1就可以输出弱高,并且此时可以做输入。
一周热门 更多>