首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

用C语言编程时,如何给单片机的端口分配地址?

请问版主 zenglian 例子如下
/*===========================================================================

KS0070(44780) 16x2 字符液晶屏驱动演示程序总线方式 晓奇
=============================================================================
连接线图: LCM-------51 LCM-------51 LCM--------51
DB0-----P0.0 DB4-----P0.4 RW-------P2.0
DB1-----P0.1 DB5-----P0.5 RS-------P2.1
DB2-----P0.2 DB6-----P0.6 E-------P2.7=>74ls00+wr+rd
DB3-----P0.3 DB7-----P0.7 VLCD接1K2电阻到GND

[注]:AT89C51的晶振频率为12MHz
============================================================================*/
//#pragma src // 产生汇编文件
#include
#include

//========= 变量类型标识的宏定义,大家都喜欢这么做 ==============
#define Uchar unsigned char
#define Uint unsigned int

// ================= LCM1602A端口地址定义 =======================
char xdata Lcd1602CmdPort _at_ 0x7cff; //E=1 RS=0 RW=0
char xdata Lcd1602WdataPort _at_ 0x7eff; //E =1 RS=1 RW=0
char xdata Lcd1602StatusPort _at_ 0x7dff; //E=1 RS=0 RW=1

以上端口定义时 如 Lcd1602CmdPort _at_ 0x7cff 即P2=0x7c p0=0xff 是这样吗?如不对的话为什么定义Lcd1602CmdPort 为 0x7cff 而不是 0x7dff或0x7eff
如果是 P2=0x7c p0=0xff 这样定义 那就相当于p2=01111100 即p20=0 p21=0 p27=0 (E=0 RS=0 RW=0)这与注释//E=1 RS=0 RW=0 不相符呀?是不是该例子有误?

如果有 Lcd1602CmdPort = 0x38; 请问单片机如何执行?即每步 p0=? p2=?
谢谢。

[此贴子已经被作者于2006-1-18 8:57:41编辑过]

谢谢,因刚学,有很多东西还不清楚。现在加强总线的学习。
返回列表