|
发表于 2008-4-29 20:08:05
|
显示全部楼层
我也是菜鸟,才开始学AVR。
本人觉得最好的手册在 winAVR文件夹\doc\avr-libc。
中文的去芯艺的网站http://www.chipart.cn/ 。
下载了你的源代码在winAVR(20080411)中试了下:
“swith”应该是“switch”,case后面第一个;错了,应该是:。(这是最基本的c,建议c教材认真看下)
makefile应该没有错。主要是你代码写法有错。
替你贴源代码:
#include <avr/io.h>
#include<stdio.h>
int main(void)
{ unsigned char retc,A;
int i;
retc=0;
sbi(portC,0); //E1=1
sbi(portB,1); //E2=1
cbi(portD,6); //CTR28=1
cbi(portD,7); //CTR30=1
while (1)
{
while(portD_0==0);
while(portD_0==1);
while(portD_0==0);
for(i=0;i<=7;i++)
{
retc=retc<<1;
if(PINC&0X10)retc=retc+1;
}
swith(retc)
case(01);A=0xF0&portC;portC=A;break; //CTR1
case(02);A=(0xF0&portC)|0x08;portC=A;break; //CTR2
case(03);A=(0XF0&portC)|0X04;portC=A;break; //CTR3
case(04);A=(0XF0&portC)|0X0C;portC=A;break; //CTR4
case(05);A=(0XF0&portC)|0X02;portC=A;break; //CTR5
case(11);A=(0XC1&portB);portB=A;break; //CTR6
case(12);A=(0XC1&portB)|0X20;portB=A;break; //CTR7
case(13);A=(0XC1&portB)|0X10;portB=A;break; //CTR8
case(14);A=(0XC1&portB)|0X30;portB=A;break; //CTR9
case(15);A=(0XC1&portB)|0X08;portB=A;break; //CTR10
case(16);A=(0XC1&portB)|0X28;portB=A;break; //CTR11
case(17);A=(0XC1&portB)|0X18;portB=A;break; //CTR12
case(18);A=(0XC1&portB)|0X38;portB=A;break; //CTR13
case(19);A=(0XC1&portB)|0X04;portB=A;break; //CTR14
case(21);sbi(portD,6);break; //CTR29
case(22);sbi(portD,7);break; //CTR30
case(23);sbi(portB,0);break; //CTR22
}
} |
|