搜索
bottom↓
回复: 3

问一个AVR单片机关于传送数据的问题

[复制链接]

出0入0汤圆

发表于 2008-3-31 00:42:47 | 显示全部楼层 |阅读模式
如果我定义了一个下面的变量
unsigned long int dds_no;
而我想把这个变量的内容以8位并行数据的形式传送给DDS芯片,可是这个4字节的频率控制字我需要分4次传送,每次传送需要用其他I/O口模拟数字逻辑脉冲来锁定这一数据,请问我应该如何操作.

可以将dds_no 赋值给另一个变量来实现吗?比如:
unsined char i;
unsigned long int dds_no;
unsigned char dds_temp;
for(i=0;i<4;i++)
{
dds_temp=dds_no>>(24-8*i);
}
这样可以实现吗?还是需要用其他的方法??

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

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

出0入0汤圆

发表于 2008-3-31 09:48:16 | 显示全部楼层
最好的方法是:将1个4个字节的dds_no与1个4个元素的char数组定义成共同体使用,看看C的书.

出0入0汤圆

 楼主| 发表于 2008-3-31 12:44:41 | 显示全部楼层
谢谢马老师~!~!我以前是用51的汇编的,现在刚开始用AVR,从来没用过共用体这种格式,您看我这样定义是对的吗?
   
    union dds
      {
       unsigned long int fqcwd;
       unsigned char temp[4];
       }dds;
   void main(void)
     { DDRB=0xff;
       PORB=0xff;
       unsigned char i;
       dds.fqcwd=0x3f564812;
       for(i=3;i>=0;i--)
         {
         PORTB=dds.temp;
          }
      

     }

出0入0汤圆

 楼主| 发表于 2008-3-31 12:59:43 | 显示全部楼层
还有一个问题,12864的液晶显示问题,我可不可以只显示一列中的某一个点后就退出程序呢?因为我想做扫频仪,利用12864点阵液晶作显示,所以想尽量加快程序运行速度~!~!不知道这样可不可行~!~!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-23 09:22

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

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