4314|2

90

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于movx指令向外部器件端口地址送数据问题,急盼高手指点! [复制链接]

#define DIGPORT  XBYTE[0x0200]               //定义字位口
#define WORDPORT XBYTE[0x0100]               //定义字型口
#define fosc  12                        //晶振频率
#define time0 2000                           //定时2000us

#include
#include
#include

uchar digbit;                               //字位
uchar wordbuf[4];                           //字型码缓冲区
//uint xdata  WORDPORT _at_ 0x0200;
//uint xdata  DIGPORT  _at_ 0x0100;
uint  idata time0_tmp;                     //临时变量,用于计算定时
uchar getcode(uchar i);                     //根据共阴极字型编码表获取字型代码函数
void display(void);                        //显示函数

void main(void)                            //主函数
{
        DIGPORT = 0;                            //关闭显示
       
        TMOD    = 0x01;                         //T0工作方式1
        time0_tmp = 65536-time0*fosc/12;
        TH0 = (time0_tmp/256);
        TL0 = (time0_tmp%256);
        TR0 = 1;
        ET0 = 1;
        EA  = 1;
       
        digbit = 0x01;                          //从第一位数码管开始
        wordbuf[3] = 4;
        wordbuf[2] = 3;
        wordbuf[1] = 2;
        wordbuf[0] = 1;       
        while(1);

}
void time0_int(void) interrupt 1          //定时器0中断服务子程序,定时动态扫描显示
{
        TH0 = (time0_tmp/256);
        TL0 = (time0_tmp%256);
        display();
}

uchar getcode(uchar i)                      //根据共阴极字型编码表获取0~9,A~B字型代码
{
        uchar p;
        switch(i)
        {
                case 0: p=0x3f; break;
                case 1: p=0x06; break;
                case 2: p=0x5B; break;
                case 3: p=0x4F; break;
                case 4: p=0x66; break;
                case 5: p=0x6D; break;
                case 6: p=0x7D; break;
                case 7: p=0x07; break;
                case 8: p=0x7F; break;
                case 9: p=0x67; break;
                case 10: p=0x77; break;
                case 11: p=0x7C; break;
                case 12: p=0x39; break;
                case 13: p=0x5E; break;
                case 14: p=0x79; break;
                case 15: p=0x71; break;
                default:  break;
         }
   return(p);
}

void display(void)
{
        uchar i;
        switch (digbit)
        {
           case 1: i = 0; break;
           case 2: i = 1; break;
           case 3: i = 2; break;
           case 4: i = 3; break;
           default:   break;
   }
   DIGPORT = 0;                       //关闭显示
   WORDPORT = getcode(wordbuf);    //送字型码
   DIGPORT = digbit;                  //送字位码
   if(digbit<0x80)
     digbit = digbit*2;
   else
     digbit = 0x01;
}
下边这两句按书上说的,应该在AlE有效后往P0口送数据,可是我用keil仿真怎么没有观察到呢!!!!!!!!!!!!!
   WORDPORT = getcode(wordbuf);    //送字型码
   DIGPORT = digbit;                  //送字位码


最新回复

lbing7 P1 口没有变化啊,端口寄存器和引脚都是逻辑1啊 但是我看外部数据存储器对应器件地址到是有正确的数据 还有/PSEN,怎么在一个周期也两次有效啊,即出现了两次低电平   详情 回复 发表于 2008-1-25 10:12
点赞 关注

回复
举报

60

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
LZ你看P1口试试...

呵呵
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
lbing7
P1 口没有变化啊,端口寄存器和引脚都是逻辑1啊

但是我看外部数据存储器对应器件地址到是有正确的数据
还有/PSEN,怎么在一个周期也两次有效啊,即出现了两次低电平


 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表