导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→谁能指点一下AVR初学者一个简单问题[lele19950907]

 *第25033篇: 谁能指点一下AVR初学者一个简单问题

  
楼 主:lele19950907 2008年11月10日14:07
 谁能指点一下AVR初学者一个简单问题
#include "avr/io.h"
#include "avr/interrupt.h"

unsigned int i,j;

void delay (unsigned int i)//延时子程序
    {
     for (i;i>  0;i--)
    { for (j=100;j>  0;j--)    ;
   ;;}
 }

int main ()//主函数
{
  DDRD &= ~(1  <  <7);
  PORTD |= (1  <  <7);
//  PORTD |= (1  <  <3);
//  PORTD = 0x77;
  DDRA |= (1  <  <7);
//  PORTA |= (1  <  <7);
  //DDRB |= (1  <  <0);
 // PORTB |= (1  <  <0);

  MCUCR |= (1  <  <ISC11)|(1  <  <ISC00)|(1  <  <ISC01);//INT1下降沿触发INT0上升沿触发
  GICR |= (1  <  <INT0)|(1  <  <INT1);//使能INT0,INT1
  sei();//使能全局中断
while (1)
{
  while (PIND &= 0x80)
 {
  //if (PIND &= 0x80)//D7按下,B7闪亮
 //{
  PORTA &= ~(1  <  <7);
  delay(100);
  PORTA |= (1  <  <7);
  delay(50);
  }
 // else //D7不按,B7长亮
 // {
  //PORTA &= ~(1  <  <7);
  //delay(100);
  PORTA |= (1  <  <7);
  delay(50);
 // }
 //}

}
}

就是按PD7,PDA闪亮,不按,长亮
现在是软件仿真很正常,写到芯片里不行,只会闪亮,再怎么按键都不能切换状态

  
2楼:designpcb 2008年11月10日16:28
 没有分析程序,不过指一下小错误
while (PIND &= 0x80)//有错误
PIND &= 0x80是赋值语句,不是判断语句
  
3楼:lele19950907 2008年11月11日08:46
 while()这句应该没错
while()这句应该没错,里面的内容为真,即可循环,就实现了闪亮功能;为假则灯长亮
  
4楼:designpcb 2008年11月11日16:00
 告诉你错了还不信
while (PIND &= 0x80)//就相当于while(1)
你的里面是赋值语句,没有判断的功能.
  
5楼:designpcb 2008年11月11日16:03
 回去好好看下c 语言的书.
回去好好看下c 语言的书.
  
6楼:lele19950907 2008年11月12日08:32
 谢谢楼上的
我改成while (PIND & 0X80),虽然仿真没通过,但烧到芯片里后,却是OK的了...

>>>>>>对该主题发表你的看法

本主题贴数6,分页: [第1页]


[上一篇主题]:科瑞华电子系统有限公司

[下一篇主题]:三极管加热的问题