永发信息网

如何用C语言操纵AVR的IO端口

答案:1  悬赏:80  手机版
解决时间 2021-04-04 23:53
如何用C语言操纵AVR的IO端口
最佳答案
如何用C语言操纵AVR的IO端口(以ICCAVR为例):
举例一:将PB0定义为输出,且输出为高电平
DDRB=BIT(0); //定义 PB0为输出
PORTB|=BIT(0); // PB0 输出高电平
举例二:将PB0、PB1定义为输出,且PB0输出低电平,PB1均为高电平
DDRB|=BIT(0)|BIT(1); //定义 PB0、PB1为输出
PORTB|=BIT(0)|BIT(1);// PB0、PB1 输出高电平
举例三:将PB0数据寄存器的数值翻转,即如果是1时变成0,如果是0时变成1
PORTB^=BIT(0); // PB0 输出高电平
举例四:将PB0、PB1数据寄存器的数值翻转,即如果是1时变成0,如果是0时变成1
PORTB^=BIT(0)|BIT(1); // PB0 输出高电平
举例五:将PB2、PB3定义为输入,不带上拉电阻
DDRB&=~(BIT(2)|BIT(3)); //定义 PB2、PB3为输入
PORTB&=~(BIT(2)|BIT(3)); // 将 PORT 置0,没有上拉电阻
举例六:将PB2、PB3定义为输入,带上拉电阻。即没有引用这些引脚时,缺省值为高电平
SFIOR&=~BIT(PUD); // SFIOR寄存器的上拉电阻控制位PUD置0,在整个代码中,这句话可以不出现,或仅出现一次即可。因为它是一个控制全部上拉电阻的控制位。
DDRB&=~(BIT(2)|BIT(3)); //定义 PB2、PB3为输入
PORTB|=BIT(2)|BIT(3); // 将 PORT 置1,满足上拉电阻的另一个条件
举例七:DDRB=BIT(0)|BIT(1) 与 DDRB|=BIT(0)|BIT(1) 的区别
假定在执行上面两句指令前,DDRB 的状态为: 1000 0000
如果执行 DDRB="BIT"(0)|BIT(1) ,DDRB的状态变为: 0000 0011
如果执行 DDRD|=BIT(0)|BIT(1),,DDRB的状态变为: 1000 0011
那前一句会先清空以前的所有状态,后一句保留前面的状态。
在实际应用中,后一句更常用。
举例八:将第三位置1,除了用BIT(3),还有其它的表达方法吗?
DDRB|=BIT(3);
DDRB|=1<<3;
DDRB|=0x08;
DDRB|=0b00001000;
#define LED_SET PORTD |= (1 << PD5) //位置高
#define LED_CLR PORTD &= ~(1 << PD5) //位置低
#define LED_COM PORTD ^= (1 << PD5) //位取反
#define LED_R PIND & (1 << PD5) //位读取
通过上面的定义就可以在程序中直接操作I/O了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么同样是德系涡轮,奔驰烧机油最少
贪嗔痴新少林寺台词,求新少林寺中,方丈说的
奔驰r350气囊感应器在哪里装着
我在1977年国家灰复高考那年参加的考试并接到
爱的教育经典名句,关于老师的名言警句
天津最近哪个商场有G-STAR或LEVIS的折扣东西
When it comes ourselves at the weekend, h
求古言名字 女主的两个侍女一个叫四大一个叫
大嶂山地址在什么地方,想过去办事
武术扑步轮拍后面是什么
台湾与大陆有着深后的渊源关系
我老婆高度近视1000度,会遗传给孩子吗
求这首歌!!!
嘴唇上长很多白色小点是什么东西,怎么回事
尿不湿淘宝通用好评语,淘宝卖家给买家差评对
推荐资讯
哪个牌子的女士钱包好,300块以内什么牌子的真
赵人患鼠,乞猫于中山。中山人予之猫,善捕鼠
想要办公室电脑装个显卡玩游戏,该想个什么理
一套28万二手房过户需要多少费用
男生问女生要薯片有什么含义?
宫廷语录表情,手机qq表情宫廷语录怎么弄到微
[甲]陈胜、吴广乃谋曰:“今亡亦死,举大计
你好,有没有可以将一张老照片的折痕处理掉的
网上玩真心话大冒险,在群里选择大冒险,都有
英语格言励志短句,有关人生的励志英语句子
那首歌歌词有五年后你赚到钱了
龙亭区开封市劳动人事争议仲裁院这个地址在什
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?