keil教程——用示波器解释数据总线 XBYTE[0X7FFF]和XBYTE[0XbFFF]

keil教程——用示波器解释数据总线 XBYTE[0X7FFF]和XBYTE[0XbFFF]_第1张图片
一、总线概述
计算机的总线分为控制总线、地址总线和数据总线等三种。而数据总线用于传送数据,控制总线用于传送控制信号, 地址总线则用于选择存储单元或外设。
在这里我们用到的是数据总线DB,它允许数据双向流通
二.程序设计
1.源码

#include  	//访问绝对地址必需函数库

void main()
{
     
	unsigned long t;
	while(1){
     
	DBYTE[0x30] = XBYTE[0x7fff];	//读入数据
	for(t=0;t<10000;t++);;
	XBYTE[0xbfff] =~DBYTE[0x30];	//写出数据
	for(t=0;t<13000;t++);}
}

2.解释
DBYTE[0x30] = XBYTE[0x7fff]

  1. 该语句是将该外地址0x7fff的内容如:将数据DD复制到地址RAM30H里,图中DD被复制了

keil教程——用示波器解释数据总线 XBYTE[0X7FFF]和XBYTE[0XbFFF]_第2张图片

  1. 执行该语句时单片机的两个端口:P2^7和RD会被拉低,就是等于0
    keil教程——用示波器解释数据总线 XBYTE[0X7FFF]和XBYTE[0XbFFF]_第3张图片
    但是它间隔太短显示不出来如上图,我用proteus就调出波形,如下图
    keil教程——用示波器解释数据总线 XBYTE[0X7FFF]和XBYTE[0XbFFF]_第4张图片每当从外读取数据,两个端口就被拉低

XBYTE[0xbfff] =~DBYTE[0x30]
该语句是将该内地址RAM30H的内容如:将数据DD复制并取反到外地址0x7fff
keil教程——用示波器解释数据总线 XBYTE[0X7FFF]和XBYTE[0XbFFF]_第5张图片
唯一不同是:执行该语句时单片机的两个端口:P2^6和RD会被拉低,就是等于0

其他也都跟①DBYTE[0x30] = XBYTE[0x7fff]语句一样,就不再论述

XBYTE[0X7FFF]是什么意思

  1. 0X7FFF=0111 1111 1111 1111,说明P2.7=0,其余为为1,这样就指向了地址为7fff的地址单元。运行XBYTE[0X7FFF]P2.7口会被拉低,因此可以寻址并且存储数据
  2. 0XbFFF=1011 1111 1111 1111,说明P2.6=0,其余为为1,这样就指向了地址为7fff的地址单元。运行XBYTE[0XbFFF]P2.6口会被拉低,因此可以寻址并且存储数据

你可能感兴趣的:(单片机仿真,单片机)