第9章8051扩展资源的C编程
第9章_8051扩展资源的C编程 + 8253+8255+8155+ (1)
8 373
D0~D7 A0 A1 8253 8 CS
CLK0
CLK1 CLK2
154
RD WR P1.7
RD WR GATE0,1,2
计数器 0
GATE0
CLK0
例 测3个通道脉冲信号的计数 率。
采用8253可同时测3个通道脉 冲信号。 程序如下:
T0
计数器 1
GATE1
CLK1
P1.7
计数器 2
GATE2
OUT
OUT
5
4
3
2
1
0(5) 4
3
2
特点: (1)与方式2相同,有自动装入计数初值的能力。 (2)计数初值为偶数时,在前一半的计数过程中输出高电平, 后一半的计数过程中输出低电平,输出波形为对称的方波。
(3)当计数初值为奇数时,输出高电平比输出低电平的 16 时间多一个时钟脉冲,波形为不对称方波。
WR
GATE
4
CW
N=4
高
3 2 1 0
OUT
方式0的三个特点: (1)控制字写入控制寄存器后,输出端OUT立即输出低 电平。写完计数初值后,若GATE为高电平,在CLK的下 降沿开始计数,输出OUT仍为低电平。当计数到0时, OUT立即输出高电平,并一直保持。
7
CLK WR
GATE
OUT 4 3 2 1 0
如 XBYTE[0x1234] = 0x56; 则等价于 mov dptr,#1234h mov @dptr,#
28
#include<absacc.h> #include<reg51.h> #define uchar unsigned char #define uint unsigned int #define COM8253 XBYTE[0x8003] #define C1 XBYTE[0x8000] #define C2 XBYTE[0x8001] #define C3 XBYTE[0x8002] #define SNUM 1 sbit P1_7=P1^7; /*门控端*/ uchar it=20; uchar sn=SNUM; uint idata BUF8253[3]; /*计数率缓冲区*/
教学课件第九章MCS51单片机扩展技术
接法:1、利用译码器(7 4LS138、74LS139)
2、利用线译法
EPROM的选择 (1)容量 (2)工作速度 (3)温度 (4)电源
EPROM扩展应注意问题: (1)根据应用系统要求、选择容量 (2)注意工作温度、电压、工作速度等因素 (3)注意锁存器 (4)考虑EPROM的兼容性
8-2 数据存储器的扩展
定时器/计数器
与控制字相反,状态字寄存器只能读出。 8155内部的可编程定时器/计数器是一个14 位的减法计数器,可用来定时或对外部事件 计数。
四、MCS—51单片机与8155接口
RAM字节地址:7E00H~7EFFH 命令/状态寄存器:7F00H A口地址:7F01H B口地址:7F02H C口地址:7F03H 定时/计数器低8位:7F04H 定时/计数器高8位:7F05H
一、常用选址方法
为了唯一地选中外部某一存储单元(I/ O接口芯片作为数据存储器的一部分),必须 进行两种选择:首先是选择出该存储器芯片 (或I/O接口芯片),称为片选;其次是选择 出该芯片的某一存储单元(或I/O接口芯片 的寄存器),称为字选。常用的选址方法有 线选法和地址译码法。
1、线选法
若系统只扩展少量的外部RAM和I/O接口芯 片,一般都采用线选法。
一、 MCS-51程序存储器扩展性能 1、空间范围:0000H~FFFFH 2、程序存储器译码:
(1)全空间译码 (2)线译码 3、程序空间与数据空间共同使用的总线 地址总线A15~A0、数据总线D7~D0 控制总线 /PSEN、ALE
二、8051和8751的扩展方法
/EA=0 外空间 /EA=1 PC<0FFFH
存储器及接口
存储器:SRAM 6116、6264、62256 EEPROM 2826
第九章 8051扩展资源的C编程
单片机原理及应用:8051扩展资源的C编程
宁波大学
Ningbo University
信息科学与工程学院
信号组合实现的端口操作
地 址 线 A1 0 0 1 0 0 1 1 1 × A0 0 1 0 0 1 0 1 1 × RD 0 WR 1 CS 0 操作 端口A→ CPU 端口B→ CPU 端口C→ CPU CPU →端口A CPU →端口B CPU →端口C CPU→控制寄存器 非法操作 未选中
可编程外围并行接口8255
A组控 制部件 双向数 据总线 数据 总线 缓冲 器 读 写 控 制 部 件 8位内部数 据总线 A组端口 A(8 ) A组端口C 上半部(4) B组端口C下 半部(4) B组控 制部件 I/O
PA7-PA0
I/O
PC7-PC4
D7-D0
RD WR A1 A0 RESET CS
Ningbo University
信息科学与工程学院
可编程外围定时器8253
• CLK 时钟输入 • OUT 计数器输出, 当计数器减为 零时,输出相 应信号 • GATE 门控信号,用 于启动或禁止 计数器工作
单片机原理及应用:8051扩展资源的C编程
宁波大学
Ningbo University
信息科学与工程学院
宁波大学
Ningbo University
信息科学与工程学院
C端口置位/复位控制字
• 端口C的数位常用作控制或应答信号,通过对 8255A的控制口写入置位/复位控制字,可使端口 C的任意一个引脚的输出单独置1或单独置0.
0
D6
D5
不用
D4
D3
D3 0 0 0 0 1 1 1 1
51单片机C语言应用与开发(第9章)
4. 具有将可变的选择与特殊操作组合在一起的 能力,改善了程序的可读性;
5. 提供的库包含许多标准子程序,具有较强的 数据处理能力; 6. 由于具有方便的模块化编程技术,使已编好 程序可容易地移植;
C51程序结构
预处理命令 全局变量说明; 函数1说明; …… …… 函数n说明;
main() { 局部变量说明; 执行语句; 函数调用(实际参数表); 函数1(形式参数说明) { 局部变量说明; 执行语句; 函数调用(实际参数表); } …… …… 函数n(形式参数说明) { 局部变量说明; 执行语句; 函数调用(实际参数表); }
8
片内RAM,间接寻址,共256字节。
片外RAM,分页间址,共256字节。(MOVX @Ri)
xdata
code
16
16
片外RAM,间接寻址,共64k字节。(MOVX @DPTR)
ROM区域,间接寻址,共64k字节。(MOVC @DPTR)
访问片内RAM比访问片外RAM的速度要快得 多,所以对于经常使用的变量应该置于片内 RAM中,即用bdata、data、idata来定义;对 于不经常使用的变量或规模较大的变量应该置于 片外RAM中,即用pdata、xdata来定义。例如:
/* IP */ sbit PS = 0xBC; sbit PT1 = 0xBB; sbit PX1 = 0xBA; sbit PT0 = 0xB9; sbit PX0 = 0xB8; /* P3 */ sbit RD = 0xB7; sbit WR = 0xB6; sbit T1 = 0xB5; sbit T0 = 0xB4; sbit INT1 = 0xB3; sbit INT0 = 0xB2; sbit TXD = 0xB1; sbit RXD = 0xB0; /* SCON */ sbit SM0 = 0x9F; sbit SM1 = 0x9E; sbit SM2 = 0x9D; sbit REN = 0x9C; sbit TB8 = 0x9B; sbit RB8 = 0x9A; sbit TI = 0x99; sbit RI = 0x98; #endif
8051内部资源的C编程.pdf
8051内部资源的C编程 中断一.中断源二.中断的控制1.中断允许寄存器IE2.中断优先级寄存器IP三.中断响应定时器/计数器(T/C)一.与T/C有关的特殊功能寄存器1.计数寄存器TH和TL2.T/C控制寄存器TCON3.T/C的方式控制寄存器TMOD4.T/C2的方式控制寄存器:暂不介绍 二.T/C的工作方式1.方式02.方式13.方式24方式35.T/C2的工作方式三.定时器/计数器的初始化1.初始化步骤2.计数初值的计算串行口一.与串行口有关SFR1.串行口控制寄存器SCON2.电源控制寄存器PCON二.串行口的工作方式1.方式02.方式l:3.方式2和方式3三.串行口初始化1.串行口波特率2初始化步骤中断所谓中断,是指当计算机执行正常程序时,系统中出现某些急需处理的异常情况和特殊请求,这时CPU暂时中止现行程序,转去对更紧迫事件进行处理,处理完毕后,CPU自动返回原来的程序继续执行。
中断是一种常见的编程方法,如利用定时器0或定时器1的中断作为系统时间参考;利用外部中断INT0或INT1作为键盘按键中断处理等等。
中断处理函数以一下形式书写: void int_t0(void) interrupt 1 {}8051单片机有5个或更多中断源,有两个中断优先级,每个中断源的优先级可以编程控制,中断允许受到CPU"开中断位"(在C51的表达示EA)和"中断源开中断位"的两级控制。
一,中断源中断源是指任何引起计算机中断的事件来源,一个CPU允许有多个中断源。
8051系列单片机至少有五个可能的中断(8052有6个,其他系列成员最多可达15个)。
8051单片机的五个中断源是:外部中断请求0,由INT0\(P3。
2)输入;外部中断请求1,由INT0\(P3。
2)输入;片内定时器/计数器0溢出中断请求;片内定时器/计数器1溢出中断请求;片内串行口发送/接受中断请求。
51单片机外部存储器的扩展
一、地址线旳译码
存储器芯片旳选择有两种措施:线选法和译码法。
1、线选法。所谓线选法,就是直接以系统旳地址线作为 存储器芯片旳片选信号,为此只需把用到旳地址线与存储 器芯片旳片选端直接相连即可。 2、译码法。所谓译码法,就是使用地址译码器对系统旳 片外地址进行译码,以其译码输出作为存储器芯片旳片选 信号。译码法又分为完全译码和部分译码两种。
ALE
8051
LE OE
P0.7
8D 8Q
P0.6
7D 7Q
P0.5
6D 6Q
P0.4
5D 5Q
P0.3
4D 4Q
P0.2
3D 3Q
P0.1
2D 2Q
P0.0
1D 1Q
74HC573 地址总线扩展电路
OE:输出允许端,为0
时芯片有效。
A7
LE:锁存控制端,高电
A6 平时,锁存器旳数据输出端
A5 Q旳状态,与数据输入端D
(1)完全译码。地址译码器使用了全部地址线,地址与存储 单元一一相应,也就是1个存储单元只占用1个唯一旳地址。
(2)部分译码。地址译码器仅使用了部分地址线,地址与存 储单元不是一一相应,而是1个存储单元占用了几种地址。
❖ 二、扩展存储器所需芯片数目旳确定
❖
若所选存储器芯片字长与单片机字长
一致,则只需扩展容量。所需芯片数目按下式
07~00 I0~I7
× 8 )
扩
锁存器
展
74 HC 573 D0~D7
8位数据
RD
OE
WR
GND WE
图2.2-13 8031与6264的连接
第九章8051单片机系统扩展
~ 1FFFH
地址译码进行外部扩展举例
扩 展 器 件 6264 8255 0832
片内字节地址数 8K 4 1
地址编码 0000H~1FFFH 3FFCH~3FFFH 7FFFH
9.2 存储器的并行扩展
9.2.1 数据存储器扩展概述 单片机应用系统中并行扩展的数据存储器都是静态随 机存储器 SRAM,常用的SRAM有62系列的6264、62256、 628128、628512等,存储容量分别为 8KB、32KB、128KB、 512KB等。 数据存储器地址空间同程序存储器一样,由 P2 口 提供高 8 位地址, P0 口分时提供低 8 位地址和 8 位双向数 据线。 访问片外扩展数据存储器的4条寄存器间址指令:
S6
S1
第二个机器周期 S2 S3 S4 S5
S6
高8位PCH 低8位PCL 指令
高8位DPH或P2输出 低8位DPL 数据输出
(b)数据存储器写周期时序 图9-3 访问片外RAM的操作时序
9. 2. 3
数据存储器扩展举例
图9-4 扩展64KB RAM
9.3 并行I/O接口的扩展
9.3.1 简单的并行I /O扩展
8051单片机系统扩展
本节介绍8051单片机系统扩展技术,主 要介绍一下2点: 1、存储器的扩展 2、 I/O接口扩展电路设计
9.1 并行扩展概述
9.1.1 外部并行扩展总线
1.扩展方式 并行I/O口 并行扩展总线:三总线方式
P2 8 8 8 A8 ~ A15 地址总线
P0
地址 8 A0 ~ A7 锁存器 D 0 ~ D7
S1 ALE RD P2 P0 高8位PCH 低8位PCL 指令 高8位DPH或P2输出 低8位DPL 数据输入 第一个机器周期 S2 S3 S4 S5 S6 S1 第二个机器周期 S2 S3 S4 S5 S6
第9章(1) MCS 51 单片机存储器扩展PPT课件
1、 常用的EPROM芯片
EPROM的典型芯片是27系列产品,例如,2764(8KB)、27128 (16KB)、27256(32KB)、27512(64KB)。型号 “27”后面的数字表 示其位存储容量。如果换算成字节容量,只需将该数字除以8即可。
例 使用两片2764扩展16 KB的程序存储器,采用线选法选中芯片。扩展连接 图如图所示。以P2.7作为片选,当P2.7=0时,选中2764(1);当P2.7=1时, 选中2764(2)。因两根线(A13、A14)未用,故两个芯片各有2*2=4个重叠的 地址空间。
左片:000000~11111,即0000H~1FFFH; 000000~11111,即2000H~3FFFH; 000000~11111,即4000H~5FFFH; 000000~11111,即6000H~7FFFH;
5、已知系统扩展容量,如何确定扩展存储器所需芯片数目
(1)若所选存储器芯片字长与单片机字长一致,则只需扩 展容量。所需芯片数目按下式确定:
芯片数目 存系储统器扩芯展片容容量量
(2)若所选存储器芯片字长与单片机字长不一致,则不仅 需扩展容量,还需字扩展。所需芯片数目按下式确定:
芯片数 存 目 系储 统器 扩芯 展片 容 存容 量 系 储量 统 器字 芯长 片字长
单片机系统扩展方法
系统扩展是指为加强单片机某方面功能,在最小应用 系统(CPU、存储器、I/O接口)基础上,增加一些外围功能部
件而进行的扩充。
一、MCS-51系列单片机的外部扩展结构
MCS-51系列单片机具有很强的外部扩展功能。其外部扩 展都是通过三总线进行的。
09-8051扩展资源的C编程
表1.8 8155内部端口编址
AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
× 0 × 1 × 0 × 1 × × × × × × × × × × × × × × × × 0 0 0 0 0 0 1 1 端 口
命令状态寄存器(命 令/状态口) PA口
PB口
PC口 定时器低8位
× 0
2.8155的RAM和I/O口编址
8155在单片机应用系统中是按外部数据存储器统 一编址的,地址为16位,其高8位地址由片选线--CE提 供,低8位地址为片内地址。当IO/M=0时,对RAM进 行读/写,RAM低8位地址为 00H~FFH;当IO/M=1时, 对I/O口进行读/写,I/O口及定时器由AD0~AD3进行寻 址。其编址如表1.8所示。
{ *ad_adr=0 ;
/* 启动转换 */
i=i ; i=i ;
/* 延时等待EOC变低 */
while (ad_busy = =0 ) ; /* * ad_adr ;
ad_adr ++ ; } } void main ( void )
/* 存转换结果 */
8255的口A、口B、口C均工作在方式0输出,方式选择命令字 为80H;2732的启动编程和停止编程,由PC7的复位/置位控制, 当PC7=0时启动编程,PC7=1时,编程无效。 EPROM编程如下所示,参数为RAM起始地址、EPROM起始
地址和编程字节数。
# include < absacc.h > # include <reg51.h >
(2) 串行口扩展方法。这是MCS-51单片机串行口 在方式0工作状态下所提供的I/O口扩展功能。串行口 方式0为移位寄存器工作方式,因此接上串入并出的 移位寄存器可以扩展并行输出口,而接上并入串出的
8051C编程基本模板
《8051单片机C语言编程模板》杜洋2009.7[程序开始处的程序说明]/****************************************************************************** ***************程序名:编写人:杜洋编写时间:20 年月日硬件支持:接口说明:修改日志:NO.1-/****************************************************************************** ***************说明:/****************************************************************************** ***************/[单片机SFR定义的头文件]#include <REG51.h> //通用89C51头文件#include <REG52.h> //通用89C52头文件#include <STC11Fxx.H> //STC11Fxx或STC11Lxx系列单片机头文件#include <STC12C2052AD.H> //STC12Cx052或STC12Cx052AD系列单片机头文件#include <STC12C5A60S2.H> //STC12C5A60S2系列单片机头文件[更多库函数头定义]#include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#include <float.h> //浮点数处理#include <fstream.h> //文件输入/输出#include <iomanip.h> //参数化输入/输出#include <iostream.h> //数据流输入/输出#include <limits.h> //定义各种数据类型最值常量#include <locale.h> //定义本地化函数#include <math.h> //定义数学函数#include <stdio.h> //定义输入/输出函数#include <stdlib.h> //定义杂项函数及内存分配函数#include <string.h> //字符串处理#include <strstrea.h> //基于数组的输入/输出#include <time.h> //定义关于时间的函数#include <wchar.h> //宽字符处理及输入/输出#include <wctype.h> //宽字符分类#include <intrins.h> //51基本运算(包括_nop_空函数)[常用定义声明]sfr [自定义名] = [SFR地址] ; //按字节定义SFR中的存储器名。
8051单片机c语言程序设计与实例解析
8051单片机C语言程序设计与实例解析在现代电子技术领域,单片机是一种应用十分广泛的微处理器,而在单片机的应用中,8051单片机是一种非常经典的代表。
与此C语言作为一种高级编程语言,在单片机的程序开发中也有着广泛的应用。
本文将从8051单片机C语言程序设计的角度,对其进行深度和广度兼具的解析,通过实例来帮助读者更好地理解和掌握这一技术。
1. 8051单片机概述8051单片机是由Intel公司于上世纪80年代推出的一款经典单片机,至今仍然广泛应用于各种领域。
它的特点是体积小、功能强大、接口丰富,以及使用方便等。
在实际应用中,我们可以根据不同的需求选择不同型号的8051单片机,比如常见的AT89S52、AT89C52等。
2. C语言在8051单片机中的应用C语言作为一种高级编程语言,具有结构化、模块化和可移植性等优点,因此在单片机的程序设计中有着广泛的应用。
通过C语言编程,我们可以更轻松地实现对单片机的控制和管理,而且代码的可读性也更好,易于维护和修改。
3. 程序设计与实例解析接下来,我们将结合具体的实例来说明8051单片机C语言程序设计的方法和技巧。
我们可以以LED灯的控制、数码管的显示、蜂鸣器的驱动等为例,详细讲解如何使用C语言编写程序,通过8051单片机实现相应的功能。
我们也可以讲解一些常用的库函数和编程技巧,让读者能够更好地理解和应用这些知识。
4. 个人观点与理解在我看来,8051单片机C语言程序设计是一项非常有趣和有挑战性的工作。
通过编写程序,我们可以将自己的想法转化为现实,实现各种各样的功能,这种成就感是非常有价值的。
掌握了这项技能之后,我们也能够更好地应对各种实际问题,为自己的学习和职业发展打下良好的基础。
总结回顾通过本文的阐述,我们对8051单片机C语言程序设计进行了全面的评估和解析,从基本概念到具体实例,再到个人观点和理解,希望读者能够从中受益。
通过不断地实践和学习,我们相信大家一定能够掌握这一领域的知识,成为优秀的单片机程序设计工程师。
8051单片机系统扩展
8255的地址范围: 高8位地址变化范围 :P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
1 01 11111 低8位地址变化范围:P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
(3)控制线
控制线控制8255的读RD:、写WR、复位RESET 及片选CS等。
(4)地址线
A1 A0 00 01 10 11
选择口 A口 B口 C口 控制口
8255方式选择及方式控制字
方式选择控制字
D7 D6 D5 D4 D3 D2 D1 D0
C口下半部 B口控制位 B组方式控制位,D2=1方式1,反之方式0 C口上半部控制位
A口控制位 A组方式控制 D6D5=00 方式0
01 方式1 1X 方式2 总控制选择位 D7=1 选择A、B、C口工作方式 D7=0 C口进行位操作
8255接口扩展举例
(1)8255与单片机连接图
(2) 8255初始化
对8255的3个端口的工作方式预先设定。设置 控制字经控制口写入。
例如,若要求8255PA口按方式1输入,PB口按方式0输 出,PC口高4位按方式1输入,PC口低4位安方式0输 出,则只要作如下初始化编程。
1 1 1 1 1 1 ×× 由此可得8255的地址范围为:BFFCH~BFFFH。
0832的地址: 高8位地址变化范围: P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
0 1 1 1 1 11 1 低8位地址变化范围: P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
Chap5 8051扩展资源(ADC0809)的C编程
vO I IR
f
实现I/V转换,输出为负的,如何输出正的?Vref=-5V
DAC0832典型应用
Rf
利用虚短和虚断得
vN vP 0
R1 vI
vN vP R2
A + vO
vI vN R1
vN vO Rf
电压并联负反馈
vI
vO
Rf R1
输出与输入反相
DAC0832电路设计
ADC0809
• 8位A/D转换器(28PIN)
• IN0-IN7:8个模拟通道输入端。 • ADDC、ADDB、 ADDA:通道地址 线(000~111对应了8个通道) • ALE:地址锁存允许信号。 • START:启动转换信号。 • EOC:转换结束信号。 • OE:输出允许信号(允许读)。 • CLK:外部时钟脉冲输入端,典 型值640K。 • VREF(+) 、VREF(-):参考电压 输入端。 • Vcc:+5V电源。 • GND:地。
AD574的引脚
• DB0-DB11:12位数据输出线,带三态控制。 • STATUS:工作状态指示位, STATUS=l时转 换正在进行; STATUS=0时转换结束。 • CE:芯片允许工作控制。 • CS:片选信号。 • R/C:读或启动转换控制。R/C=1时读选 通,R/C=0时启动转换。 • A0:A0=0期间输出高8位,A0=1期间输出低 4位。在启动时,若A0=0作12位转换;A0=1 作8位转换。 • 12/8:用于控制数据格式,12/8接+5V时, 12位并行输出有效;接地时,输出为8位接 口,这时12位数据分两次输出。 • Ref_IN,Ref_OUT:用作增益满刻度校准。 • BPLRof:补偿输入,用作零点校正。 • AG,DG:模拟地、数字地。
8051 扩展资源的C 编程
• 8255 有两个命令字:工作方式选择控制字和C 口置位/复位命令字。 它们的编程状态决定8255 各端口的工作方式。这两个命令字占用同 一地址,由各自的标识位区别。
• 1. 工作方式选择控制字 • 8255 有三种工作方式选择:方式0、方式1 和方式2。具体的方式选
控制口地址为8003H。
上一页
返回
6.2 可编程外围并行接口8255
• 6.2.1 8255 芯片的内部结构与引脚
• 8255 的内部结构如图6.4 所示。 • 8255 具有三个8 位并行口PA、PB、PC,通过编程为输入 • 或输出端口,其中C 口还可以编程为两个4 位端口。三个端口的特点
有所不同:A 口输入、输出都带锁存,B 口和C 口输出有锁存,输入 无锁存。内部控制电路分为两组,A 组控制端口A 和端口C 的高4位; B 组控制端口B 和端口C 的低4 位。控制电路包括了命令字寄存器, 用来存放工作方式控制字。8255 的引脚如图6.5 所示。
中文 整理 整顿 清洁
清扫
安全
素养
6S典型例子 日语拼音
SEIRI SEITON SEIKETSU
SEISO
SAFETY(英)
SHITSUKE
典型例子
定期处理不用的物品
金牌标准:30s内就可以
维持6S成果,保持环境 清洁
自己的区域自己负责清 扫
严格按照规章、流程作 业
严守规定、团队精神、 文明礼仪
上一页 下一页 返回
6.2 可编程外围并行接口8255
• 在方式1 中,若要改变A 口或B 口的输入或输出方式,需要对工作方 式命令字重新编程。
• 方式2 则不需要改写方式命令字,仅由不同的联络信号控制。方式1 和方式2 把C 口作为联络信号。
C语言在8051单片机上的扩展
C语言在8051单片机上的扩展(KEIL中interrupt、using关键字的用法)直接访问寄存器和端口定义sfr P0 0x80sfr P1 0x81sfr ADCON; 0xDEsbit EA 0x9F操作ADCON = 0x08 ; /* Write data to register */P1 = 0xFF ; /* Write data to Port */io_status = P0 ; /* Read data from Port */EA = 1 ; /* Set a bit (enable all interrupts) */在使用了interrupt 1 关键字之后,会自动生成中断向量在ISR中不能与其他"后台循环代码"(the background loop code) 共享局部变量因为连接器会复用在RAM中这些变量的位置,所以它们会有不同的意义,这取决于当前使用的不同的函数复用变量对RAM有限的51来将很重要。
所以,这些函数希望按照一定的顺序执行而不被中断。
timer0_int() interrupt 1 using 2{unsigned char temp1 ;unsigned char temp2 ;executable C statements ;}"interrupt"声明表示向量生成在(8*n+3),这里,n就是interrupt 参数后的那个数字这里,在08H的代码区域生成LJMP timer0_int 这样一条指令"using" tells the compiler to switch register banks on entry to an interrupt routine. This "context" switch is the fastest way of providing a fresh registerbank for an interrupt routine's local data and is to be preferred to stacking registers for very time-critical routines. Note that interrupts of the same priority can share aregister bank, since there is no risk that they will interrupt each other.'using' 告诉编译器在进入中断处理器去切换寄存器的bank。
第9章8051单片机的系统扩展
两片程序存储器的地址范围: 2732(1)的地址范围:7000H~7FFFH; 2732(2)的地址范围: B000H~BFFFH; 6116(1)的地址范围:E800H~EFFFH; 6116(2)的地址范围:D800H~DFFFH。
2019/4/5 9
2. 译码法
最常用的译码器芯片: 74LS138(3-8 译码器) 74LS139(双 2-4译码器)74LS154(4-16译码器)。可根据设计任务的 要求,产生片选信号。
输
G1 G2A* G2B* C B
入
A
输
出
Y7* Y6* Y5* Y4* Y3* Y2* Y1* Y0*
2019/4/5
11
( 2) 74LS139(双2-4译码器) 引脚如下图。真值表如表8-2(P168)所示。
2019/4/5
12
例 要扩8片8KB的RAM 6264,如何通过74LS138把64KB 空间分配给各个芯片?
2019/4/5 6
9.2
读写控制、地址空间分配和外部地址锁存器
9.2.1、存储器扩展的读写控制
RAM芯片:读写控制引脚,记为OE和WE ,与MCS-51 的RD和WR相连。 EPROM芯片:只能读出,故只有读出引脚,记为OE ,
该引脚与MCS-51的PSEN相连。
9.2.2存储器地址空间分配
MCS-51发出的地址是用来选择某个存储器单元进行读写, 要完成这种功能,必须进行两种选择: “片选”和 “单元选择”。 存储器空间分配除考虑地址线连接外,还讨论各存储器芯片在整个存储 空间中所占据的地址范围,常用的存储器地址分配的方法有两种:线 性选择法(简称线选法)和地址译码法(简称译码法)
80C51单片机并行IO口的扩展毕业设计资料
摘要近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断的走向深入。
但是在由单片机构成的实际测控系统中,最小应用系统往往不能满足要求,因此在系统设计时首先要解决系统扩展问题。
单片机扩展通常是借助外部器件对系统进行扩展。
本文主要研究了采用可编程多功能扩展芯片intel 8155扩展单片机I/O 口。
把单片机作为一个核心部件,设计单片机与8155的接口,并实现数码管三位数字的显示。
本文的主要内容有:单片机的概述,设计的意义,核心器件intel 8155芯片、80C51单片机、数码管的介绍,单元电路模块,设计原理图及流程图,软件编程设计以及最后的结果和个人在整个设计前后的心得体会。
关键词:单片机,8155,数码管,动态显示。
- I -AbstractWith the development of computer penetration in the social field and LSI in recent years, the application of MCU is constantly deepening. but in the actual measurement and control system constituted by the microcontroller, the smallest applications system often can not meet the requirements, so we have to solve the system expansion. The Microprocessor usually use an external device to relize the expansion of the system.Adopting Intel 8155 which is a kind of programmable multi-function expansion chip,this paper studies the expansion of MCU parallel I/O port. MCU act as a core component,.we have designed the 8155 chip interface to relize three digital display on LED numerical code tube.The main content of this paper are microcontroller overview of the significance of the design, the core of the device intel 8155 ;80C51 microcontroller, the introduction of LED numerical code tube, the unit circuit module,design schematics and flowcharts, software programming design, the final results and individual feelings and experiences throughout the design.Key words:MCU, 8155, LED numerical code tube, dynamic display.目录1.绪论 (1)1.1单片机概述 (1)1.2课题研究背景及意义 (2)1.3设计任务 (3)2.核心器件基本结构与工作原理 (4)2.180C51单片机 (4)2.2带RAM和计数器的可编程并行I/O扩展接口8155 (6)2.2.1 结构和引脚 (6)2.2.2 8155命令和状态字 (8)2.2.3 8155定时器/计数器 (12)2.2.4 MCS-51和8155的接口方法 (13)2.3LED显示器接口 (14)2.3.1 LED显示器的工作原理 (15)2.3.2 LED显示器的显示方式 (16)3.硬件设计 (19)3.1元器件列表 (19)3.2单元电路模块设计 (21)3.2.1 单片机 (21)3.2.2 晶振电路 (22)- 1 -3.2.3 复位电路 (22)3.2.4 Intel 8155与AT89S51接口电路 (23)3.2.5 LED数码管显示电路 (23)3.3总设计原理图 (24)4.软件设计 (25)5.成果展示 (26)总结 (27)致谢 (28)参考文献 (1)附录 (2)80C51单片机并行I/O口的扩展1.绪论1.1 单片机概述单片机是在一片芯片上集成了中央处理器CPU、随机储存器RAM、程序储存器ROM或EPROM、定时器/计数器、中断控制器以及串行和并行I/O口等功能器件的微型计算机。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计数器
UOT0
9.1.2 8253的工作方式和控制字 的工作方式和控制字 8253计数器工作方式是由编程设定的,将控制字写入控 计数器工作方式是由编程设定的, 计数器工作方式是由编程设定的 制寄存器,用它来选择每一个计数器的工作方式. 制寄存器,用它来选择每一个计数器的工作方式.控制字 的格式如下: 的格式如下:
工作方式字 特征位
15
表9-6 8255在不同工作方式下的口线功能 在不同工作方式下的口线功能
端口 A口 口 B口 口 PA PB PC0 PC1 PC2 C口 口 PC3 PC4 PC5 PC6 PC7 方式0 方式 输入 IN IN IN IN IN IN IN IN IN IN 输出 OUT OUT OUT OUT OUT OUT OUT OUT OUT OUT 输入 IN IN INTRB IBFB STBB INTRA STBA IBFA I/O I/O 方式1 方式 输出 OUT OUT INTRB OBFB ACKB INTRA I/O I/O ACKA OBFA 方式2 方式 输入/输出 输入 输出 ←→ 方式0或 方式 或1 I/O I/O I/O INTRA STBA IBFA ACKA OBFA
门控信号GATE的控制功能 表9- 门控信号 的控制功能 工作方式 方式0 方式 GATE为低电平或下降沿 为低电平或下降沿 禁止计数 GATE为上降沿 为上降沿 ----从初值开始计数,下一 从初值开始计数 下一 个时钟OUT变低 个时钟 变低 从初值开始计数 从初值开始计数 ----从初值开始计数 GATE为高电平 为高电平 允许计数
D7~D0
数据 总线 缓冲器
A组(4) 组 端口C 端口
PC7 ~ PC4
Байду номын сангаас
8255
B组(4) 组 端口C 端口 RD WR A1 A0 RESET CS 读写 控制 逻辑 B组 组 控制
PC3 ~ PC0
B组(8) 组 端口B 端口
PB7 ~ PB0
13
9.2.2 8255的命令字和工作方式 的命令字和工作方式
P0 8 ALE 8051 P2.7 P2.6 P2.5 P2.4 RD WR P1.7
8 373
D0~D7 A0 A1 8253 8 CS CLK0 CLK1 CLK2 RD WR GATE0,1,2
154
计数器 0
GATE0
CLK0
计数器 1
GATE1
CLK1
T0 计数器 2
GATE2
CLK2
P1.7
CLK0 GATE0
WR RD A0 A1 CS
读/写 写 逻辑
D7 D6 D5 D4 D3 D2 D1 D0 CLK0 OUT0 GATE0 GND
1 2 3 4 5 6 7 8 9 10 11 12
24 23 22 21 20 8253 19 18 17 16 15 14 13
VCC WR RD CS A1 A0 CLK2 OUT2 GATE2 CLK1 GATE1 OUT1
/*1s需20次中断 需 次中断 次中断*/ /*秒单元减 秒单元减1*/ 秒单元减
9
void cbfp(uchar xdata *po,uchar x){ /*计数器取值函数,参数为地址和通道 计数器取值函数, 计数器取值函数 参数为地址和通道*/ uchar h,i; i=*po;po++;po--; h=*po; BUF8253[x]=65536-(h*256+ i); /*因8253减计数 应取补*/ /*因8253减计数,应取补*/ 减计数, }
2
9.1.1 8253的结构和引脚 的结构和引脚
D7~D0 数据 总线 缓冲器 计数器 0 CLK0 GATE0 OUT0 计数器 1 CLK1 GATE1 OUT1 控制字 寄存器 计数器 2 CLK2 GATE2 OUT2 表9-1 A1,A0地址组合含义 地址组合含义 A1 0 0 1 1 A0 0 1 0 1 选择 计数器0 计数器 计数器1 计数器 计数器3 计数器 控制寄存器 3
10
void fcbf(void){ P1_7=0; COM8253=0x0a COM8253=0x4a COM8253=0x8a COM8253=0x0a cbfp(&C1,0); COM8253=0x4a cbfp(&C2,1); COM8253=0x8a cbfp(&C3,2); }
D7 SC1 D6 SC0
RL1
D6 SC0
D5 RL1
D4 RL0
D3 M2
D2 M1
D1 M0
D0 BCD 表9-4 M2,M1,M0组合含义 组合含义
表9-3 RL1,RL0组合含义 组合含义
RL0
操作类型
M2 0 0 0 0 1 1
M1 0 0 1 1 0 0
M0 0 1 0 1 0 1
工作方式 0 1 2 3 4 5
9.1 可编程外围定时器 可编程外围定时器8253
Intel公司的 公司的8253是可编定时器 计数器,片内包含有 个独 是可编定时器/计数器 公司的 是可编定时器 计数器,片内包含有3个独 立的通道,每个通道均为16位的计数器 位的计数器. 立的通道,每个通道均为 位的计数器.其计数速率均达 2.6MHz. .
001
000
0 0 1
C口 口
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
1
14
(4).8255的控制字 的控制字 (4).
①.方式选择控制字
1 D6 D5 D4 D3 D2 D1 D0
B组 组 C口(下半部 下半部) 口 下半部 1=输入,0=输出 输入, 输出 输入 B口 口 1=输入,0=输出 输入, 输出 输入 B口方式选择 口方式选择 1=方式 ,0=方式 方式1, 方式 方式0 方式 A组 组 C口(上半部 上半部) 口 上半部 1=输入,0=输出 输入, 输出 输入 A口 口 1=输入,0=输出 输入, 输出 输入 A口方式选择 00=方式 , 口方式选择 方式0, 方式 01=方式 ,1×=方式 方式1, × 方式 方式2 方式
D5 RL1 D4 RL0 D3 M2 D2 M1 D1 M0 D0 BCD
11
void init8253(void){ /*初始化 初始化8253函数 函数*/ 初始化 函数 COM8253=0x3a /*选方式 选方式5*/ 选方式 C1=0;C1=0; /*设计数器初值 设计数器初值*/ 设计数器初值 COM8253=0x7a C2=0;C2=0; COM8253=0xba C3=0;C3=0; } void main(void){ init8253(); ust0(); while(sn); /*取1s定时到 定时到*/ 取 定时到 fcbf(); } D7 D6 D5 D4 D3 D2 D1 D0
第9章 8051扩展资源的C编程 8051扩展资源的 扩展资源的C
主要内容: 主要内容:
9.1 可编程外围定时器 可编程外围定时器8253 9.2 可编程外围并行接口8255 可编程外围并行接口 9.3 可编程接口芯片 可编程接口芯片8155 9.4 I2C总线扩展存储器 总线扩展存储器
1
在很多应用场合8051自身的资源不能满足要求.这时就 自身的资源不能满足要求. 在很多应用场合 自身的资源不能满足要求 要扩展. 要扩展. 扩展的外围芯片有: 以及I 扩展的外围芯片有:8253,8155,8255以及 2C口. , , 以及 口
8
void ust0(void){ /*使用定时器 函数 使用定时器0函数 使用定时器 函数*/ TMOD=TMOD&0xf0+0x01; /*定时器为方式 定时器为方式1*/ & 定时器为方式 TH0=0x4c; TL0=0x81; /*50ms定时初值 定时初值*/ 定时初值 TR0=1; ET0=1; EA=1; /*启动定时器开中断 启动定时器开中断*/ 启动定时器开中断 P1_7=1; } void t0i(void) interrupt 1{ TH0=0x4c; TL0=0x81; if((--it)==0){ it=20; sn--; } } /*定时器 中断服务程序 定时器0中断服务程序 定时器 中断服务程序*/
D7 SC1 表9-2 SC1,SC0组合含义 组合含义 SC1 0 0 1 1 SC0 0 1 0 1 选择 计数器0 计数器 计数器1 计数器 计数器2 计数器 非法 0 0 1 1 0 1 0 1 计数器闩锁操作 只读/写高字节 只读 写高字节 只读/低字节 只读 低字节 先读/写低位字节, 先读 写低位字节, 写低位字节 后读/写高位字节 后读 写高位字节
/*三个通道的取值函数 三个通道的取值函数*/ 三个通道的取值函数 /*方式 ,计数器 */ 方式5,计数器0 方式 /*方式 ,计数器 */ 方式5,计数器1 方式 /*方式 ,计数器 */ 方式5,计数器2 方式 /*取计数器0的计算值 /*取计数器0的计算值*/ 取计数器 的计算值*/ /*取计数器 的计算值 取计数器1的计算值 取计数器 的计算值*/ /*取计数器 的计算值 取计数器2的计算值 取计数器 的计算值*/
②.C口置/复位控制字 口
0 D6 D5 D4 D3 D2 D1 D0
置位 0=复位,1=置位 复位, 置位 复位 不用时置000 不用时置 控制方式 选择 111 110 101 100 位选择
表9-5 端口选择
D3D2D1
A1
A0 0 1 0 1
选通的端 口 口A 口B 口C 命令字口
011
010
方式1 方式
-----
-----