搜索
bottom↓
回复: 1

求助,AVR Studio 的诡异问题,,while(1); 这句话竟然不能编译??!!

[复制链接]

出0入0汤圆

发表于 2010-11-13 11:59:36 | 显示全部楼层 |阅读模式
近日在做巡线小车,用的是M16,但是在写了个简单的程序在调试小车的时候,竟然出现了一个特别诡异的问题,就是WHILE(1);这句话不会被编译
看我的代码

#include <avr/io.h>
#include <avr/interrupt.h>

#define countertop 10000  //这里定义了pwm波的最大计数值,从而得到50HZ的频率
#define uchar unsigned char
#define uint unsigned int

#define moto_left_fwd    PORTD=(PORTD|(1<<PD0))&(~(1<<PD1))      //左电机正转
#define moto_left_bck    PORTD=(PORTD|(1<<PD1))&(~(1<<PD0))      //左电机反转
#define moto_right_fwd   PORTD=(PORTD|(1<<PD6))&(~(1<<PD7))      //右电机正转
#define moto_right_bck   PORTD=(PORTD|(1<<PD7))&(~(1<<PD6))      //右电机反转
#define moto_left_off    PORTD=PORTD&(~(1<<PD0))&(~(1<<PD1))          //左电机停
#define moto_right_off   PORTD=PORTD&(~(1<<PD6))&(~(1<<PD7))      //右电机停



uchar duty1=75,duty2=85; //定义占空比,为字符型,0-99,即duty%



void init()         //初始化
{

DDRD|=0b11110011;           
DDRA=0;  //PORTA0-7设置为输入,读取传感器的值
PORTA&=0x7F;

moto_left_off;  //初始关闭电机
moto_right_off;

TCCR1A=0b10100000;         //配置定时器1工作在相位与频率修正PWM,TOP值为ICR1
TCCR1B=0b00010010;        //8分频,正常PWM输出
ICR1=countertop;         //ICR1 为计数器的TOP值

OCR1A=countertop*duty1/100;           //设置捕捉比较输出初值
OCR1B=countertop*duty2/100;

TIMSK|=((1<<OCIE1A)|(1<<OCIE1B)|(1<<TOIE1));   //使能比较匹配中断
SREG=0x80;           //使能全局中断


/* 置位 WDTOE 和 WDE*/
WDTCR |= (1<<WDTOE) | (1<<WDE);
/* 关闭看门狗 */
WDTCR = 0x00;
}



int  main()
{
        init();
        while((PINA&0X80)==0X80);  //等待启动键按下
        moto_left_fwd;
        moto_right_fwd;

       
        while(1);

}


解释一下这句话:
while((PINA&0X80)==0X80);  //等待启动键按下
我在PA7加了一个按键,如图,目的就是在这个键按下的时候小车程序才会跑。

(原文件名:PA7按键原理图.jpg)
按理说,应该按键按下一次以后,小车的应该一直跑,但现在的问题是,按键按下小车可以跑,只要按键松开,小车就停止转动,再按下去,小车又开始转,松开又停止。
你说要是这样的话,那不是程序是自动复位了。细想想,如果不是这样,小车应该在按键按一下以后就会一直转啊,比较我已经通过moto_left_fwd;moto_right_fwd;这两句给P口赋值了。。。只有复位了才会P口上的值清零啊。。。。。。。现在竟然出现了这毛病
问了一个学长是看门狗没关,但是我已经在程序里关了啊。。。但是这里说一句就是PDF上有一句是_WDR();由于AVR STUDIO编译通不过,我就去掉了。感觉没啥大的必要,难道跟这个有关????
下面看一下我在AVR studio的调试截图。。。

调试截图1 (原文件名:调试截图一.JPG)


调试截图2 (原文件名:调试截图2.JPG)
看调试效果,while里面没有形成死循环。。。。。
我现在无语了。。。。哪位大仙给我解释一下啊。。。。。跪求解释啊。。。。。。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2010-11-15 19:06:44 | 显示全部楼层
没有人知道么。。。。不要沉了啊。。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 08:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表