找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4267|回复: 1
打印 上一主题 下一主题
收起左侧

[求助]求指教,AVR单片机中I/O引脚的PINA为只读寄存器,那为什么还能写?如下

[复制链接]
跳转到指定楼层
楼主
ID:45848 发表于 2013-1-25 20:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

求指教,AVR单片机中I/O引脚的PINA为只读寄存器,那为什么还能写?

 

如下:PING &=0X1F;
书上写的是如果在PIN内写入1,则数据寄存器(PORTX)的该位发生“1,,0的转换”,这句话是什么意思呢?是说本来是1变成0,本来是0变成1么,但是我试了没有发生任何变化额?

 

完整程序如下:

#include <avr/io.h>


int main(void)
{


	DDRA=0XFF;
	PORTA=0X55;
	SFIOR=0x00;
	DDRG = 0X00;
	PORTG = 0Xff;
	while(1)
    {
		PING &=0X1F;
		switch((PING&0x1F))
		{	
			case 0x1E:  while((PING&0x1F)==0x1E);PORTA =0x01;break;
			case 0x1D:  while((PING&0x1F)==0x1D);PORTA =0x02;break;	       
			case 0x1B:  while((PING&0x1F)==0x1B);PORTA =0x04;break;	 
			case 0x17:  while((PING&0x1F)==0x17);PORTA =0x08;break;	 
			case 0x0F:  while((PING&0x1F)==0x0F);PORTA =0x10;break;	
		}

	}
}

 

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:28415 发表于 2013-2-4 13:48 | 只看该作者
你 程序中PING是一个变量,例如 while((PING&0x1F)==0x1E);PORTA =0x01; 这句话是判断PING与0x1F相与后是否等于0x1E,从而人为修改PORTA的值,此处的PING与PINA,PINB PINC PIND 不是同一个概念。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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