求助AVR的一个程序

来源:百度知道 编辑:UC知道 时间:2024/06/17 01:43:49
以下程序怎么一下载到单片机,灯就会亮,不是要先使PB3为1灯才会亮吗
#include <iot13v.h> #include <macros.h> void main(void) { PORTB = 0b00000000; DDRB =0xFF; while(1) { if(PORTB==0b00001000); { PORTB = 0b00000011; } } }
我想在PB3接一个开关,用来控制灯。
用的是ATTINY13
#include <iot13v.h>
#include <macros.h>
void main(void)
{
PORTB = 0b00000000;
DDRB =0xFF;
while(1)
{
if(PORTB==0b00001000);
{
PORTB = 0b00000011;
}
}
}

看好了,程序上明显错误,我也是用AVR的而且看得出你用的是ICCAVR。你看,DDRX是端口方向寄存器,高输出低输入,你的设置很明显,全部是输出。另外你要是用PB3做按键的话,你要首先对按键定义使得按键端口定义为输入,并建立按键函数(可选),一般的按键都是低电平触发的,因为AVR内部有上拉电阻,还不知道你的高电平触发能否实现。我给你大致写一下啊(不一定编译通过,你可以再细改):
#include <iot13v.h>
#include <macros.h>
#define s (PINB&0x08) //定义按键PB3口
void main(void)
{
DDRB=0xf7;
PORTB=0x00;
while(1)
{
if(s==1) //根本就没有“if(PORTB==。。。)”的写法,另外if括号后面的分号是多余的,因为你下面带的有函数
{
/***此处应该添加一个10ms左右的延时,然后再判断一下,用来防止按键抖动***/
PORTB |= 0b00000011; //相当于PORTB=PORTB|0x03;很明显 你的低两位是发光管,而且在端口有输入的时候你就应该取或一下
}
}
}