完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
unsigned char read()
{ return(PINB&BIT(0)); } void main() { unsigned char r; DDRB=DDRB|0x01; PORTB=PORTB|0x01; DDRB=DDRB|BIT(1); while(1) {r=read(); if(r==0) {PORTB=PORTB|BIT(1);} //h else {PORTB=PORTB&(~BIT(1));}//l } } B口第一个管脚用杜邦线链接电源或者地,用这段指令能读到读到r==0和非零,从而点亮或者关闭一个二极管,但是如果用 #define read PINB&BIT(0) void main() { unsigned char r; DDRB=DDRB|0x01; PORTB=PORTB|0x01; DDRB=DDRB|BIT(1); while(1) {r=read(); if(r==0) {PORTB=PORTB|BIT(1);} //h else {PORTB=PORTB&(~BIT(1));}//l } }就不行了,如果把 if(r==0) 这里改成if(r) 就只能读到高,但是不能读到低,无论怎么改B1口的输入还是输出模式,加不加上拉电阻,都是只能读到高而不能读到低,这是怎么回事,为什么换成上面的函数返回形式就都能读到了,虽然现在一直用的挺好,但是还是想把它弄明白,请大神助攻 {PORTB=PORTB|BIT(1);} //h else {PORTB=PORTB&(~BIT(1));}//l |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
AVR Atmega16 Bootloader程序与上位机LabView程序
5674 浏览 6 评论
#include <ioavr.h>这个头文件我应该下什么编译器
8125 浏览 0 评论
3376 浏览 2 评论
3359 浏览 1 评论
10530 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-17 19:12 , Processed in 0.602579 second(s), Total 65, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2235