文档介绍:第14章单片机系统并行接口
[例14-1] 8255 I/O口的初始化。
#include<>
#include <.h>
#define PA XBYTE[0x0000] /*A口地址*/
#define PB XBYTE[0x0001] /*B口地址*/
#define PC XBYTE[0x0002] /*C口地址*/
#define PCT XBYTE[0x0003] /*控制口地址*/
void main()
{
PCT =0x92; /*定义8255的A口工作在输入方式,B口也工作在输入方式*/
}
[例14-2] 8155 I/O口的初始化。
#include<>
#include <.h>
#define BYTE unsigned char
#define WORD unsigned int
#define S8155 XBYTE[0x7E00]
#define A8155 XBYTE[0x7E01]
#define B8155 XBYTE[0x7E02]
#define C8155 XBYTE[0x7E03]
#define TL8155 XBYTE[0x7E04]
#define TH8155 XBYTE[0x7E05]
void main(void)
{
TL8155=0x18;
TH8155=0x40;/*为定时器赋初值*/
S8155=0xC2; /*写入命令字*/
}
[例14-3] 应用8155芯片进行 I/O口扩展实现矩阵键盘和LED显示。
#include <>
#include <.h>
#include <>
#include <>
#include <>
#include <>
#define Uchar unsigned char
#define Uint unsigned int
#define Ulong unsigned long
/* 定义8155的I/O端口地址*/
#define P8155CW 0x7f00 /* 8155命令口地址*/
#define P8155IA 0x7f01 /* 8155的PA口地址*/
#define P8155IB 0x7f02 /* 8155的PB口地址*/
#define P8155IC 0x7f03 /* 8155的PC口地址*/
/* 定义定时器T0的时间常数值和方式控制字*/
#define V_TH0 0x9e /* 时间常数高8位*/
#define V_TL0 0x75 /* 时间常数低8位*/
#define V_TMOD 0x01 /* 定时器T0方式控制字*/
/* 定义LED显示字符段码*/
static struct {
Uchar ascii;
Uchar stroke;
} code led_strokes[27] =\
{{'0',0x3f}, {'1',0x06}, {'2',0x5b}, {'3',0x4f}, {'4',0x66},\
{'5',0x6d}, {'6',0x7d}, {'7