搜索
bottom↓
回复: 3

ICCAVR 端口操作问题(端口乱序、位操作)

[复制链接]

出0入0汤圆

发表于 2009-7-31 00:41:40 | 显示全部楼层 |阅读模式
最新做了个ATmega128的小板,接了个12864液晶,用洞洞板搭的,由于焊接方便LCD的引脚跟单片机的端口是随意接的,怎么好走线怎么接。

所以造成本来只要一条指令就可以送数据到端口的,而现在要N条,AVR的位操作不太完善啊。

这是我写的,感觉不够紧凑,我想知道有没更简单的方法,我的这个程序读需要35个周期,写需要59个周期,而且程序很长感觉。

还有想问下位传递用怎么写,AVR汇编有位传递指令吗? 比如把某一位data.5送到PORTA.2




void LCD_DataOut(unsigned char LCDData)  //59T
{
//--------DB0-------
if (LCDData&1)
PORTC|=(1<<PC7);
else
PORTC&=~(1<<PC7);
//--------DB1-------
if (LCDData&2)
PORTA|=(1<<PA7);
else
PORTA&=~(1<<PA7);
//--------DB2-------
if (LCDData&4)
PORTA|=(1<<PA5);
else
PORTA&=~(1<<PA5);
//--------DB3-------
if (LCDData&8)
PORTA|=(1<<PA3);
else
PORTA&=~(1<<PA3);
//--------DB4-------
if (LCDData&16)
PORTA|=(1<<PA1);
else
PORTA&=~(1<<PA1);
//--------DB5-------
if (LCDData&32)
PORTF|=(1<<PF7);
else
PORTF&=~(1<<PF7);
//--------DB6-------
if (LCDData&64)
PORTF|=(1<<PF5);
else
PORTF&=~(1<<PF5);
//--------DB7-------
if (LCDData&128)
PORTF|=(1<<PF3);
else
PORTF&=~(1<<PF3);
}

unsigned char LCD_DataIn(void)   //35T
{
unsigned char DataIn=0,DataR1;
//--------DB0-------
if (PINC&(1<<7))
DataIn+=1;
//--------DB1-------
DataR1=PINA;
if (DataR1&(1<<7))
DataIn+=2;
//--------DB2-------
if (DataR1&(1<<5))
DataIn+=4;
//--------DB3-------
if (DataR1&(1<<3))
DataIn+=8;
//--------DB4-------
if (DataR1&(1<<1))
DataIn+=16;
//--------DB5-------
DataR1=PINF;
if (DataR1&(1<<7))
DataIn+=32;
//--------DB6-------
if (DataR1&(1<<5))
DataIn+=64;
//--------DB7-------
if (DataR1&(1<<3))
DataIn+=128;
return DataIn;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入21汤圆

发表于 2009-7-31 03:00:09 | 显示全部楼层
晕。。。。。。
至少你的数据脚要在同一组端口上呀,我一般搭这种洞洞板的时候都会考虑一下怎么会使软件操作更方便,你这样其实省不了多少事的。

没有办法只能你这样一个一个判断了。

出0入0汤圆

 楼主| 发表于 2009-7-31 03:21:07 | 显示全部楼层
...

我不喜欢在板上看到乱糟糟的线(用久了断了几根还得焊,不可靠),我搭的板基本上看不到一根带皮的线,最多有用电阻的引脚做的跨线。

出0入0汤圆

发表于 2009-7-31 04:09:42 | 显示全部楼层
搞个数组查表吧。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 04:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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