chifeng0823 发表于 2007-8-21 16:29:55

ATmega128芯片编程的小问题!希望马老师给予解答!

最近用ATmega128芯片做个测试版,CPU采用ATMEGA128L,5V供电系统,通过48脚(PA3)输出高低电平,再由继电器可以实现弱电控制强电。使用外置晶振11.0592MHZ。JTAG接口烧写程序。主要功能是用单片机产生周期开关信号控制开关电源开5秒关21秒,对模块持续开关电30分钟。现在硬件都完成了就是在编程上遇到困难请马老师帮忙解决!

最开始编的程序如下想实现48脚高低电平的转换。不过不知为什么,在用AVR Sudio4实现时,程序总是运行第一个命令给A口置高电平就不往下走了,检查错误也没发现就是不知道什么原因,请马老师帮忙解决,由于我是第一次接触AVR,如果觉得我不行,希望老师能帮我编给小程序让我实现以上功能!谢谢!

#include "iom128v.h"





#define BIT0 0X01

#define BIT1 0X02

#define BIT2 0X04

#define BIT3 0X08         

#define BIT4 0X10

#define BIT5 0X20

#define BIT6 0X40

#define BIT7 0X80



#define DELAY_OPEN PORTA |=0x08

#define DELAY_DOWN PORTA &= ~0x08

unsigned char i=0;



void hardwire_ini(void)

{

DDRA=BIT3;

PORTA=BIT3;



}

void delay_time(unsigned int num)

{

unsigned int i,h=0;

while(num--)

{ for(i=0;i<6000;i++)

      h=0;   

}



}

void main(void)

{

hardwire_ini();



while(1)

{





DELAY_OPEN;

delay_time(2);

DELAY_DOWN;

delay_time(2);

}



}

machao 发表于 2007-8-23 22:57:50

先把主程序中的两句delay_time(2)注释掉,然后在AVR STUDIOU中模拟。



成功后加上delay,如果你的delay是2秒的话,在AVR STUDIOU中模拟可能需要30秒的时间。
页: [1]
查看完整版本: ATmega128芯片编程的小问题!希望马老师给予解答!