400本中颖单片机材料修订版

更新时间:2024-04-26 05:08:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjk中颖单片机培训资料 lzxcvbnmqwertyuiopasdfghjklzxcvbn

mqwertyuiopasdfghjklzxcvbnmqwert

yuiopasdfghjklzxcvbnmqwertyuiopas

dfghjklzxcvbnmqwe 编著:黄品高

rtyuiopasdfghjklzxcvbnmqwertypasdfghjklzxcvbnmqwertyuiopasdfghjklzxc

桂林电子科技大学成教院继续教育部 vbnmqwertyuiopasdfghjklzxcvbnmq

中颖电子股份有限公司

wertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmrtyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfg

[内部资料 仅供参考]

目录

一、概论........................................................................................................................................... 3

1.1单片机的发展史 ................................................................................................................. 3 1.2 单片机的发展趋势 ............................................................................................................ 3 1.3 单片机的组成及特点 ........................................................................................................ 5 1.4单片机的分类 ..................................................................................................................... 5 1.5单片机的应用 ..................................................................................................................... 6 1.6 8位单片机产品介绍 ....................................................................................................... 7 1.7中颖单片机简介 ................................................................................................................. 7 二、SH79F32单片机结构与原理 ................................................................................................... 8

2.1 SH79F32单片机的特点及其硬件组成 ........................................................................ 8 2.2 SH79F32单片机的引脚介绍 ....................................................................................... 9

2.2.1注意事项 ................................................................................................................ 11 2.3 SH79F32单片机的CPU .............................................................................................. 11

2.3.1 CPU内核寄存器:ACC,B,PSW,SP,DPL,DPH ........................................................... 12 2.3.1 CPU增强内核特殊功能寄存器 ............................................................................ 13 2.4 SH79F32单片机存储器的结构.................................................................................. 14

2.4.1 RAM ........................................................................................................................ 14 2.4.2 Flash程序存储器 .................................................................................................. 14 2.5 I/O端口 ............................................................................................................................ 15

2.5.1 端口特性 ............................................................................................................... 15 2.5.2端口应用 ................................................................................................................ 16 2.5.3 端口的复用 ........................................................................................................... 17 2.6时钟电路与时序 ............................................................................................................... 17

2.6.1系统时钟和振荡器的特性 .................................................................................... 17

三、SH79F32单片机中断系统 ..................................................................................................... 20

3.1单片机中断系统概述 ....................................................................................................... 20 3.2 程序超范围中断(OVL) .......................................................................................... 20 3.3 中断使能 ..................................................................................................................... 21 3.4 中断标志 ..................................................................................................................... 22 3.5 中断向量 ..................................................................................................................... 23 3.6 中断优先级 ................................................................................................................. 24 3.7 中断处理 ..................................................................................................................... 24 3.8 中断的响应时间 ......................................................................................................... 25 3.9 外部中断 ..................................................................................................................... 25 3.10 外部汇总表 ............................................................................................................. 26 四、SH79F32单片机的定时器/计数器 ........................................................................................ 27

4.1 概述 ................................................................................................................................. 27 4.2 定时器0和定时器1 ....................................................................................................... 27 6.3 定时器2 ...................................................................................................................... 31

4.3.1定时器/计数器2的工作方式 .............................................................................. 32 4.3.2 定时器/计数器2的相关寄存器 ................................................................... 34

2

一、 概论

材料编写十分仓促,如有不妥之处,请大家以中颖使用手册为准。

1.1单片机的发展史

单片机作为微型计算机的一个重要分支,应用面很广,发展很快。自单片机诞生至今,已发展为上百种系列的近千个机种。

如果将8位单片机的推出作为起点,那么单片机的发展历史大致可分为以下几个阶段 1.

第一阶段(1976-1978):单片机的控索阶段。以Intel公司的MCS – 48为代表。MCS – 48的推出是在工控领域的控索,参与这一控索的公司还有Motorola 、Zilog等,都取得了满意的效果。这就是SCM(Single-chip Microcontroller)的诞生年代,―单机片‖一词即由此而来。 2.

第二阶段(1978-1982)单片机的完善阶段。Intel公司在MCS – 48 基础上推出了完善的、典型的单片机系列MCS –51。它在以下几个方面奠定了典型的通用总线型单片机体系结构。 a)

完善的外部总线。MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口。 b) c) d) 3.

CPU外围功能单元的集中管理模式。 体现工控特性的位地址空间及位操作方式。

指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。

第三阶段(1982-1990):8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。Intel公司推出的MCS – 96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。随着MCS – 51系列的广应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路路功能,强化了智能控制的特征。

4. 第四阶段(1990—):微控制器的全面发展阶段。随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。

1.2 单片机的发展趋势

目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势: 1.

CMOS化 近年,由于CHMOS技术的进小,大大地促进了单片机的CMOS化。CMOS芯片除了低功耗特性之外,还具有功耗的可控性,使单片机可以工作在功耗

3

精细管理状态。这也是今后以80C51取代8051为标准MCU芯片的原因。因为单片机芯片多数是采用CMOS(金属栅氧化物)半导体工艺生产。CMOS电路的特点是低功耗、高密度、低速度、低价格。采用双极型半导体工艺的TTL电路速度快,但功耗和芯片面积较大。随着技术和工艺水平的提高,又出现了HMOS(高密度、高速度MOS)和CHMOS工艺。CHMOS和HMOS工艺的结合。目前生产的CHMOS电路已达到LSTTL的速度,传输延迟时间小于2ns,它的综合优势已在于TTL电路。因而,在单片机领域CMOS正在逐渐取代TTL电路。 2.

低功耗化 单片机的功耗已从Ma级,甚至1uA以下;使用电压在3~6V之间,完全适应电池工作。低功耗化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗干扰能力以及产品的便携化。 3.

低电压化 几乎所有的单片机都有WAIT、STOP等省电运行方式。允许使用的电压范围越来越宽,一般在3~6V范围内工作。低电压供电的单片机电源下限已可达1~2V。目前0.8V供电的单片机已经问世。 4.

低噪声与高可靠性 为提高单片机的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片厂家在单片机内部电路中都采用了新的技术措施。 5.

大容量化 以往单片机内的ROM为1KB~4KB,RAM为64~128B。但在需要复杂控制的场合,该存储容量是不够的,必须进行外接扩充。为了适应这种领域的要求,须运用新的工艺,使片内存储器大容量化。目前,单片机内ROM最大可达64KB,RAM最大为2KB。 6.

高性能化 主要是指进一步改进CPU的性能,加快指令运算的速度和提高系统控制的可靠性。采用精简指令集(RISC)结构和流水线技术,可以大幅度提高运行速度。现指令速度最高者已达100MIPS(Million Instruction Per Seconds,即兆指令每秒),并加强了位处理功能、中断和定时控制功能。这类单片机的运算速度比标准的单片机高出10倍以上。由于这类单片机有极高的指令速度,就可以用软件模拟其I/O功能,由此引入了虚拟外设的新概念。 7.

小容量、低价格化 与上述相反,以4位、8位机为中心的小容量、低价格化也是发展动向之一。这类单片机的用途是把以往用数字逻辑集成电路组成的控制电路单片化,可广泛用于家电产品。 8.

外围电路内装化 这也是单片机发展的主要方向。随着集成度的不断提高,有可能把众多的各种处围功能器件集成在片内。除了一般必须具有的CPU、ROM、RAM、定时器/计数器等以外,片内集成的部件还有模/数转换器、DMA控制器、声音发生器、监视定时器、液晶显示驱动器、彩色电视机和录像机用的锁相电路等。 9.

串行扩展技术 在很长一段时间里,通用型单片机通过三总线结构扩展外围器件成为单片机应用的主流结构。随着低价位OTP(One Time Programble)及各种类型片内程序存储器的发展,加之处围接口不断进入片内,推动了单片机―单片‖应用结构的发展。特别是I C、SPI等串行总线的引入,可以使单片机的引脚设计得更少,单片机系统结构更加简化及规范化。

随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将列强。在单片机家族中,80C51系列是其中的佼佼者,加之Intel公司将其MCS –51系列中的80C51内核使用权以专利互换或出售形式转让给全世界许多著名IC制造厂商,如Philips、 NEC、Atmel、AMD、华邦等,这些公司都在保持与80C51单片机兼容的基础上改善了80C51

4

的许多特性。这样,80C51就变成有众多制造厂商支持的、发展出上百品种的大家族,现统称为80C51系列。80C51单片机已成为单片机发展的主流。专家认为,虽然世界上的MCU品种繁多,功能各异,开发装置也互不兼容,但是客观发展表明,80C51可能最终形成事实上的标准MCU芯片。

1.3 单片机的组成及特点

单片机是微型机的一个主要分支,在结构上的最大特点是把CPU、存储器、定时器和多种输入/输出接口电路集成在一块超大规模集成电路芯片上。就其组成和功能而言,一块单片机芯片就是一台计算机。 1.

单片机的组成:通过内部总线把计算机的各主要部件 接为一体,其内部总线包括地址总线、数据总线和控制总线。其中,地址总线的作用是在进行数据交换时提供地址,CPU通过它们将地址输出到存储器或I/O接口;/数据总线的作用是在CPU与存储器或I/O接口之间,或存储器与外设之间交换数据;控制总线包括CPU发出的控制信号线和外部送入CPU的应答信号线等。单片机中的CPU、存储器等部件将在后面章节陆续介绍。 2.

1) 2)

单片机的特点由于单片机的这种结构形式及它所采取的半导体工艺,使其具有很多显著的特点,因而在各个领域都得到了迅猛的发展。单片机主要发如下特点:

有优异的性能价格比。

集成度高、体积小、有很高的可靠性。单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。 3)

控制功能强。为了满足工业控制的要求,一般单片机的指令系统中均有极丰富的转移指令、I/O口的逻辑操作以及位处理功能。单片机的逻辑控制功能及运行速度均高于同一档次的微机。 4) 5) 6)

低功耗、低电压,便于生产便携式产品。

外部总线增加了I C(Inter-Integrated Circuit)及SPI(Serial Peripheral Interface)等串行总线方式,进一步缩小了体积,简化了结构。

单片机的系统扩展和系统配置较典型、规范,容易构成各种规模的应用系统。

1.4单片机的分类

单片机作为计算机发展的一个重要领域,应用一个较科学的分类方法。根据目前发展情况,从不同角度单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。 1.

通用型/专用型:这是按单片机适用范围来区分的。例如,80C51是通用型单片机,它不是为某种专用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。

5

2. 总线型/非总线型这是按单片机是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。

3. 控制型/家电型这是按照单片机大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和外设接口集成度高。

显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。

1.5单片机的应用

由于单片机具有显著的优点,它已成为科技领域的有力工具,人类生活的得力助手。它的应用遍及各个领域,主要表现在以下几个方面: 1. 2.

单片机在智能仪表中的应用单片机广泛地用于各种仪器仪表,使仪器仪表智能化,并可以提高测量的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。

单片机在机电一体化中的应用机电一体化是械工业发展的方向。机电一体化产品是指集成机械技术、微电子技术、计算机技术于一体,具有智能化特征的机电产品,例如微机控制的车床、钻床等。单片机作为产品中的控制器,能充分发挥它的体积小、可靠性高、功能强等优点,可大大提高机器的自动化、智能化程度。 3.

单片机在实时控制中的应用单片机广泛地用于各种实时控制系统中。例如,在工业测控、航空航天、尖端武器、机器人等各种实时控制系统中,都可以用单片机作为控制器。单片机的实时数据处理能力和控制功能,可使系统保持在最佳工作状态,提高系统的工作效率和产品质量。 4.

单片机在分布式多机系统中的应用在比较复杂的系统中,常采用分布式多机系统。多机系统一般由若干台功能各异的单片机组成,各自完成特定的任务,它们通过串行通信相互联系、协调工作。单片机在这种系统中往往作为一个终端机,安装在系统的某些节点上,对现场信息进行实时的测量和控制。单片机的高可靠性和强抗干扰能力,使它可以置于恶劣环境的前端工作。 5.

单片机在人类生活中的应用自从单片机诞生以后,它就步入了人类生活,如洗衣机、电冰箱、电子玩具、收录机等家用电器配上单片机后,提高了智能化程度,增加了功能,倍受人们喜爱。单片机将使人类生活更加方便、舒适、丰富多彩。

综合所述,单片机已成为计算机发展和应用的一个重要方面。另一方面,单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。

6

1.6 8位单片机产品介绍

1.

Intel 公司的单片机: 其产品有MCS-48、MCS-51和MCS-96三大系列几十个型号的单片机。 MCS-51系列单既包括三个基本型号8031(无ROM型)、8051(ROM型)、8751(EPROM型)。8051是世界上产量排名第二的著名单片机。 2.

ATMEL公司的单片机 : ATMAL公司在1994年以E2PROM技术和Intel公司的80C31单片机核心技术进行交换,从而取得80C31核的使用权。先进的Flash技术和80C31核相结合,生产出具有8051结构的Flash型和EEPROM型单片机(尤其是89C51和89C52) 3.

中颖单片机:中颖单片机本质上属于8051系列,是一种典型的高性能单片机 ,完全集成混合信号系统级芯片(SOC System of Chip),完全兼容MCS-51。 采用流水线(pipe line)技术,不再区分时钟周期和机器周期,提高了指令执行效率。具备控制系统所需的模拟和数字外设,包括看门狗、ADC、DAC、电压比较器、电压基准输出、定时器、PWM、定时器捕捉和方波输出等,并具备多种总线接口,包括UART、SPI、SMBUS(与I2C兼容)总线。中颖系列单片机采用Flash ROM技术,集成JTAG,支持在线编程。

1.7中颖单片机简介

中颖电子主要进行单片机(MCU)产品集成电路设计,专注于家庭消费类电子.MCU母体包括4-bit OTP/MASK MCU、8-bit OTP/MASK MCU、8-bit FLASH MCU,主要应用于各种小家电、白色家电、黑色家电、汽车电子周边、运动器材、医疗保健、四表(水、电、 气、暖) 、仪器仪表、安防、电源控制、马达控制、工业控制、变频、数码电机、计算机键盘、鼠标、网络音乐(便携式、车载、床头音响)、无线儿童监控器、无线耳机/喇叭/门铃。

7

二、SH79F32单片机结构与原理

内容提要:本章介绍SH79F32单片机的内部结构、引脚功能、存储器结构、I/O口特点与应用。

2.1 SH79F32单片机的特点及其硬件组成

SH79F32是中颖公司8位单片机系列中的一款,它是一款完全兼容8051单片机的高速单片机。在同样的晶振频率下,较之传统的8051单片机它运行更快速和性能也得到提高。

SH79F32保留了标准8051芯片的大部分特性。这些特性包括内置256字节RAM和2个16位定时器/计数器,1个UART和外部中断INT0和INT1。此外,SH79F32集成了512字节外部RAM,可与8052芯片相兼容的16位定时器/计数器(Timer2)。SH79F32还集成了可存储程序和数据的32K字节Flash存储模块。

SH79F32不仅支持如EUART,IR,TWI和SPI等标准通讯模块(模式),还集成了LCD驱动器、ADC、比较器、PWM定时器和实时时钟等模块。

为了提高芯片工作的可靠性和降低功耗,SH79F32内建了PLL时钟、超低功耗(Super low power SLP)的LCD驱动器、看门狗定时器,低电压复位功能,低功率检测功能。此外SH79F32为进一步降低功耗还提供了2种省电模式。

8

图2-1 内部框图

SH79F32单片机内部框图如图2-1所示。可知SH79F32内部主要由具有流水线的8051架构、ram、32KB flash、5个8位可编程并行I/0口(P0、P1、P2、P3、P4)、3个16位定时器、外部中断、12位的PWM、10位的ADC、RTC模块等,这些功能模块由内部总线连接。从图中可以看出单片机的内部结构与传统的微型计算机的结构模式相似。

2.2 SH79F32单片机的引脚介绍

图2-2 SH79F32引脚

要使用单片机首先应该了解单片机的引脚,并牢记各个引脚的功能。引脚功能描述如下: 引脚编号 P4.0 - P4.7 P3.0 - P3.7 P2.0 - P2.7 P1.0 - P1.7 P0.0 - P0.7 类型 说明 I/O I/O I/O I/O I/O 可编程I/O口 8位双向I/O端口 8位双向I/O端口 8位双向I/O端口(P2.0和P2.1是开漏输出端口) 8位双向I/O端口 8位双向I/O端口 定时器/计数器相关端口 T0 T1 I/O I/O Timer0外部输入 Timer1外部输入 9

T2 T2EX I /O I Timer2外部输入/波特率时钟输出 Timer2重载/捕捉/方向控制 PWM控制器 PWMP PWMN FLT O O O 12位PWM定时器输出引脚 与PWMP有固定相位关系的12位PWM定时器输出引脚 PWM故障输入引脚 EUART(增强型UART) RXD0 TXD0 RXD1 TXD1 I/O O I/O O EUART0数据输入/输出引脚 EUART0数据输出引脚 EUART1或IR数据输入/输出引脚 EUART1或IR 数据输出引脚 SPI MOSI MISO SCK I/O I/O I/O I SPI主输出从输入引脚 SPI主输入从输出引脚 SPI串行时钟引脚 SPI从属选择引脚 ADC AN0 - AN5 I ADC输入信道 TWI SDA SCL I/O O TWI串行数据线(开漏) TWI串行时钟线(开漏) LCD控制器 COM1 - COM4 SEG3 - SEG32 SEG1/COM5 SEG2/COM6 VP1 - VP2 CUP1-2 O O O O P P LCD Com信号输出脚 LCD Segment信号输出脚 LCD Segment1信号输出或Com5信号输出脚 LCD Segment2信号输出或Com6信号输出脚 LCD电源引脚 LCD偏置电容连接 RTC CALIN CALOUT I O RTC校准输入脚 RTC校准输出脚 中断&复位&时钟&电源 INT0 - INT2 XTAL1 XTAL2 PLL_C GND VP3 VDD I O P P P P I I 外部中断0 - 2 该引脚上保持10μs以上的低电平,CPU将复位。由于有内建200kΩ上拉电阻连接到VDD,所以仅接一个外部电容即可实现上电复位 振荡器输入 振荡器输出 内建PLL外部电容连接脚 接地 内建3V电源输出(连接47uF电容) 电源 编程和调试接口 10

TDO(SEG3) TMS(SEG4) TDI(SEG5) TCK(SEG6) O I I I 调试接口:测试数据输出 调试接口:测试模式选 调试接口:测试数据输入 调试接口:测试时钟输入 2.2.1注意事项

VP3:为内建3V稳压电源输出端。一般接47uF电容。 a) 当单片机工作于高电压模式(3.0V-5.5V)。当单片机工作于高电压模式时,单片

机内部的电源整形模块将会自动开始工作,用来建立稳定的3V电压供给以提供给单片机以及包含在LCD驱动模块在内的外部设备。

b) 当单片机工作于低电压模式(2.4V-3.6V)时,应将VDD和VP3管脚短接如图

2-3所示。当单片机工作于低电压模式时,当芯片的输入电压低于3V时,LCD的性能会有所降低,因为大多数的LCD面板的额定工作电压都是3V。注意:当单片机工作于低电压模式时VDD的输入电压不能够超过3.6V,否则将烧坏心芯片。

图2-3 VP3和复位(工作在2.4V-3.6V) VP3和复位(3.0V-5.5V)

2.3 SH79F32单片机的CPU

1. SH79F32单片机的核心是CPU,它由运算器和控制器构成的。运算器主要用来对操

作数进行逻辑、算术和位操作。它的主要构成为:ALU、累加器ACC、位处理器、程序状态字寄存器PSW等。控制器中最基本最组成单元有:程序计数器、指令寄存器、指令译码器、定时及控制逻辑电路等。

PC(程序计数器):它是一个独立的计数器,存放着下一条将要执行的指令的存放地址。PC是16位的,故其寻址范围为64KB(216B)

11

2.3.1 CPU内核寄存器:ACC,B,PSW,SP,DPL,DPH

2. 累加器ACC:是单片机中使用最频繁的一个专用8位的寄存器,在指令系统中才用A

作为累加器ACC的助记符。累加器的作用为:累加器A是ALU的输入数据源之一,同时也常是运算结果的存放单元。

3. B寄存器:在乘除法指令中,会用到B寄存器。在其他指令中B寄存器也可作为暂

存器来使用。

4. 堆栈指针(SP):堆栈指针是一个8位的寄存器,它可以指向内部RAM的地址为

00H~FFH范围内的任何一个单元。堆栈的操作主要有两种:一是PUSH,即是将数据输入堆栈,另一种是POP,将数据弹出堆栈。在指令执行PUSH、子程序调用和中断响应等指令时,SP先加1,再将相关数据压入堆栈;当指令执行POP、RET、RETI等指令时,将数据弹出堆栈后SP再减1。系统复位后,SP中的内容为07H,使得堆栈实际上是从08H地址开始的。堆栈的主要作用是为子程序调用和中断操作的相关数据进行保护和恢复。堆栈的具体功能有两个: 1) 保护断点。因为无论是子程序调用还是响应中断进行中断服务子程序的调用操

作,当子程序和中断服务程序执行完毕后还需要返回到原主程序。因此要先将主程序的断点送往堆栈中保存起来。为正确返回主程序做准备。

2) 现场保护。在主程序调用子程序和中断服务子程序时,在这些子程序中很有可

能会用到一些寄存器(比如A、R1、R2等等),此时在这些寄存器中保存的原来在主程序的数据就会被新的数据替换掉。当执行完子程序返回主程序后,因数据改变了,使得程序不能正常运行。所以在调用子程序和中断服务子程序之前应将主程序中使用到的寄存器中的数据压入堆栈保存起来。这就是现场保护。

例如:当前SP=07H,当执行一条子程序调用指令或响应一次中断后,将PC内容(断点地址)压入堆栈,PC的低8位,压入到08H单元中,PC高8位,压入到09H中,此时SP=09H。(提示)

5. 程序状态字(Program Status Word,PSW)寄存器:PSW寄存器中包含程序的状态信息。

系统复位后其值为全零。该状态字位于单片机片内特殊功能寄存器区,字节地址为:D0H。 D7H D6H D5H D4H D3H D2H D1H D0H C 读/写 AC 读/写 F0 读/写 RS1 读/写 RS0 读/写 OV 读/写 F1 读/写 P 读/写 各个位的功能如下: 1) C(进位标志位):为0时,表示当前算术或者逻辑运算中,无进位产生;为1

时,表示当前算术或者逻辑运算中,有进位产生。 2) AC(辅助进位标志位):为0时,表示当前算数逻辑运算中,无辅助进位或借

位发生;表示当前算数逻辑运算中,有辅助进位或借位发生。 3) F0: 用户自定义标志位。

4) RS[1:0](R0—R7寄存器页选择位):RS1和RS0位用来选择片内RAM区中的4组

工作寄存器中的哪一组为当前工作寄存器(工作寄存器R0~R7稍后文中会说明)。当RS[1:0]为00时,工作寄存器的地址为(00H~07H); 当RS[1:0]为01时,工作寄存器的地址为(08H~0FH); 当RS[1:0]为10时,工作寄存器的地址为(10H~17H);

12

当RS[1:0]为11时,工作寄存器的地址为(18H~1FH); 5) OV(溢出标志位):指的是当前执行的算术指令的运算结果是否产生溢出。为

0时,表示未产生溢出;为1时,表示产生溢出。 6) F1:用户自定义标志位。 7) P(奇偶校验位):此位显示当前累加器A中值为1的位数是奇数个1还是偶

数个1。为0时,表示累加器A中的值为1的位数为偶数。例如:11001100;为1时,表示累加器A中值为1的位数为奇数。例如A中的值为11001101。记忆方法:校验位(P)加上被校验的数据位(A)中所有1的个数为偶数。此法也叫偶校验。

6. DPTR(数据指针):DPTR是一个16位专用寄存器,经常作为对外部数据存储器进行

寻址的地址指针。其高8位寄存器用DPH表示,低8位寄存器用DPL表示。该寄存器既可作为一个16位寄存器来使用,也可作为2个独立的8位寄存器DPL和DPH来使用。

2.3.1 CPU增强内核特殊功能寄存器

1.特殊功能寄存器总览

附录1:SH79F32用户手册(中文版),第8页到15页

13

2.4 SH79F32单片机存储器的结构 2.4.1 RAM

SH79F32为随机数据存储提供了内部RAM和外部RAM。内部RAM分为以下四个的部分: 1) 低位128字节的RAM (地址从00H到7FH) 可直接或间接寻址。 2) 高位128字节的RAM (地址从80H到FFH) 只能间接寻址。 3) 特殊功能寄存器(SFR,地址从80H到FFH) 只能直接寻址。

4) 外部512字节的RAM (地址从00H到1FFH,其中1E0H-1FFH为LCD RAM地址) 可

通过MOVX指令间接访问。

高位128字节的RAM占用的地址空间和SFR相同,但在物理上与SFR的空间是分离的。当一个指令访问高于地址7FH的内部位置时,CPU可以根据访问的指令类型来区分是访问高位128字节数据RAM还是访问SFR。

SH79F32支持传统的访问外部RAM方法。使用MOVXA,@Ri或MOVX@Ri,A来访问外部低位256字节RAM;用MOVX A,@DPTR或MOVX@DPTR,A来访问外部512字节RAM。

用户也能用XPAGE寄存器来访问外部RAM,使用MOVXA,@Ri或MOVX@Ri,A指令即可。此时用XPAGE来表示高于256 字节的RAM地址。

在Flash SSP模式下,XPAGE也能用作分段选择器(详见SSP部分)。

2.4.2 Flash程序存储器

(留空,候补)

14

2.5 I/O端口 2.5.1 端口特性

SH79F32拥有5组8位(40位)可编程双向I/O端口。端口的数据储存在相应的端口数据寄存器Px中(例如端口在编程时可表示为Px.y,其中x=0~4表示第几组,y的取值为0到7,表示第几位。如p0.0表示第一组的第一位IO口)。在使用端口的之前首先应将端口初始化,在初始化的过程中涉及两个控制寄存器: 1) 端口控制寄存器(PxCRy),该寄存器的作用是将相应端口设置为输入端口或输出端口。

例如:使用程序将P1CR.0寄存器设置为0,这就意味着端口p1.0被初始化为输入端口。 2) 内部上拉电阻寄存器(PxPCRy),当某一端口被初始化为输入端时,可以通过设定PxPCRy

来设定是否打开内部上拉电阻。

3) 用作输入口时, PxCR要清0。另外当用作输入口时,要开启内部上拉(PxPCR),并在

上拉后对口置高电平,以激活内部上拉电阻。

4) 对于没有使用到的IO 口,应该设置为输出口,并输出低电平,防止漏电。 1. I/O口的端口控制器如下表所示

2. I/O口的上拉电阻控制寄存器如下表所示

3. I/O口的数据寄存器地址如下表所示

15

注意: P2.0﹑P2.1端口作为N-沟道的开漏I/O,但是此端口电压不得超过5.5V。 注意:

(1) 输入端口读操作直接读引脚电平。

(2) 输出端口读操作的输入源有两种,一种是从端口数据寄存器读取,另一种是直接读引脚电平。用读取

指令来区分: 读-改-写指令是读寄存器,而其它指令读引脚电平。 (3) 不管端口是否共用为其他功能,对端口写操作都是针对端口数据寄存器。

2.5.2端口应用

sino wealth8051 stduyboard实验板上对P1口处理:当拨码开关(j5)拨到ON的位置时P1口接led;否则就是接到JP2排插,以供给其他电路。

第一个小程序,流水灯

16

2.5.3 端口的复用

40个双向I/O端口也能共用作为第二或第三种特殊功能。共用优先级按照外部最高内部最低的规则:在引脚配置图中引脚最外边标注功能享有最高优先级,最里边标注功能享有最低优先级。这意味着一个引脚已经使用较高优先级功能(如果被允许的话),就不能用作较低优先级功能,即使较低优先级功能被允许。只有较高优先级功能由软件关闭后,相应的引脚才能用作较低优先级功能。

端口的输入输出和上拉电阻设定也由相同规则控制,即:当允许端口复用为其它功能时,虽然允许用户修改PxCR(设定为输入或输出)﹑PxPCR(是否使用内部上拉电阻),但在复用功能被禁止前,这些操作不会改变端口状态。

当允许端口复用为其它功能时,任何对端口的读写操作只会影响到数据寄存器的值,端口引脚值保持不变,直到复用的其它功能关闭。

各个管脚的具体复用的规则与参数将在后续章节相应的功能处说明。

2.6时钟电路与时序

2.6.1系统时钟和振荡器的特性

1. 特性

1) 支持4种振荡器类型: 32.768kHz晶体谐振器、晶体谐振器、陶瓷谐振器和外

部时钟

2) 内建8.192MHz锁相环(PLL)振荡器 3) 内建32.768kHz加速电路 4) 内建系统时钟分频器 2. 时钟的相关定义

SH79F32内部的几个时钟定义如下:

1) OSCCLK:振荡器时钟,指的是从4个(32.768kHz晶体谐振器、晶体谐振器、陶瓷

谐振器和外部时钟)可选振荡器类型中选择使用的那个振荡器的时钟。与之相应的fOSC为OSCCLK的频率;tOSC为OSCCLK的周期。

2) PLLCLK:PLL振荡器时钟,与之相应的fPLL为PLL时钟的频率;tPLL为PLL时钟的

周期

3) WDTCLK:内部的32kHz 看门狗RC振荡器时钟。相应的fWDT为WDTCLK的频率,

tWDT为WDTCLK的周期。

4) OSCSCLK:指的是分频器的输入时钟。这个时钟的来源可能为OSCCLK或者

PLLCLK。相应的fOSCS为OSCSCLK的频率。tOSCS为OSCSCLK的周期。

5) SYSCLK: 指的是系统分频器的输出时钟。这个时钟为CPU指令周期的时钟。相

应的fSYS定义为SYSCLK的频率。tSYS定义为SYSCLK的周期。

3. 时钟概述

由振荡器产生的时钟脉冲,通过内部分频器进行分频后产生系统时钟,而系统时钟就是为CPU和片内设备正常工作而提供可靠时序。

SH79F32支持4种类型的时钟:32.768kHz晶体谐振器、晶体谐振器(400kHz-8MHz)、陶瓷谐振器(400kHz-8MHz)、外部时钟(400kHz-8MHz)。但是在实际的工作中系统时钟的来

17

源除了硬件上的连接外,还要通过代码选项对OP_OSC进行设定。

当通过代码选项将OP_OSC设定为011时(选择32.768kHz晶体振荡器)同时PLLCON,SH79F32内建的PLL(锁相环)将为系统提供高达8.192MHz的时钟。PLL的使用与否不仅仅是由代码选项OP_OSC决定还由PLLCON控制位来决定(见后表)。也就是说,如果要使用PLL,那么先要在代码选项中设定OP_OSC为011,然后再设定PLLCON控制位来将PLL功能打开。

系统时钟相关的控制寄存器入下表所示

注意:选择PLLCLK作为OSCSCLK,必须按以下步骤依次设置: 1. 在PLL控制寄存器中设置FS1和FS0; 2. 设置PLLCON = 1,打开PLL; 3. 至少等待2ms;

4. 设置FS2 = 1,选择PLL作为OSCSCLK。

选择PLLCLK切换到32.768kHz作为OSCSCLK,必须按以下步骤依次设置: 1. 设置FS[2:0] = 0xx,选择32.768kHz作为系统时钟源; 2. 执行一个NOP指令;

3. 设置PLLCON = 0,关闭PLL;

注意:不要同时执行关PLL和切换到32.768kHz的操作。

代码设定的方法如下:

18

1) 在project下拉菜单中选中“Options for Target ‘Target 1’”

2) 在弹出窗口中选择utilities标签,再点击settings。如下图所示

3) 在弹出窗口中,就能看到当前的设定,也可以点解“代码选项”进行相关的代码选

项设定。

19

三、SH79F32单片机中断系统

3.1单片机中断系统概述

在单片机中,中断技术主要运用于实施测量与控制。中断系统在计算机应用系统中起着十分重要的作用,良好的中断系统能提高计算机对外界异步事件的处理能力和响应速度,从而扩大计算机的应用范围。当测控对象发出中断请求时,单片机中断当前正在执行的程序,跳转到中断服务程序执行中断服务。当中断服务程序执行完毕后,再回到被中断的主程序处继续向下执行主程序。如图3-1所示:在单片机中,为了实现中断功能而配置的软件和硬件,称为中断系统。中断系统的处理过程包括中断请求、中断响应、中断处理和中断返回。

图3-1中断响应和处理过程

如果单片机没有中断系统,单片机的大量时间和资源可能就会浪费在查询是否有服务请求发生的操作上。可见中断技术消除了单片机在查询方式中的等待现象,大大提高了单片机的实时性和运行的效率。

SH79F32有14个中断源:1个OVL NMI中断,3个外部中断(INT0,INT1和INT2),3个定时器中断(timer 0,1和2),2个EUART中断,ADC中断,TWI中断,SPI中断,HSEC中断和PWM中断。

3.2 程序超范围中断(OVL)

SH79F32有一个不可屏蔽中断(Non-Maskable Interrupt,NMI)源——程序超范围中断(OVL),其向量定位在0x007BH中,这个不可屏蔽中断是用来防止CPU超出有效程序范围。为应用这个特性,应该用常量0xA5填满未使用的Flash ROM,如果PC超过了用户的有效程序范围,则运算代码为不存在于8051指令集中的0xA5,CPU因此得知PC已经超出了有效的程序范围,则OVL中断发生。同理PC如果超过32K Flash ROM范围,不可屏蔽中断OVL同样会发生。

不可屏蔽中断OVL享有最高优先级(除复位外),不会被其它中断源中断。中断OVL能自身嵌套,但堆栈不会因此增加,因为如果产生了这个中断则说明PC是一个无效数据,将一个无效的PC压入堆栈是无意义的。当OVL中断发生后,其它中断仍旧被允许,只要其他中断满足设定的条件,那么该中断(指前面提到的非OVL的其他中断)的标志将置1。由于OVL中断

20

是不可屏蔽中断并且具有最高中断优先级,当产生OVL中断时,其它任何中断都被屏蔽掉,不能响应,所以必须处理OVL中断以保护系统免受不必要的影响。在处理可OVL中断服务程序末端的RETI指令来修改压入栈顶的地址(如图3-2所示)(因为进入OVL中断时,压入堆栈顶端的地址是无用的),这样跳出中断服务程序后,程序可以跳转到用户指定的代码,诸如复位入口或保护程序入口。

3.3 中断使能

任何一个中断源均可通过对寄存器IEN0和IEN1中相应的位置1或清0,以实现单独允许或禁止该中断。IEN0寄存器中还包含了一个全局允许位EA,它是所有中断的总开关。一般在复位后,所有中断允许位设置为0,所有中断被禁止。 IEN0中断允许寄存器

位编号 7 位助记符 EA 说明 所有中断允许位 0: 禁止所有中断 1: 允许所有中断 6 EADC ADC中断允许位 0: 禁止ADC中断 1: 允许ADC中断 5 ET2 定时器2溢出中断允许位 0: 禁止定时器2溢出中断 1: 允许定时器2溢出中断 4 ES0 EUART0中断允许位 0: 禁止EUART0中断 1: 允许EUART0中断 3 ET1 定时器1溢出中断允许位 0: 禁止定时器1溢出中断 1: 允许定时器1溢出中断 2 EX1 外部中断1允许位 0: 禁止外部中断1 1: 允许外部中断1 21

1 ET0 定时器0溢出中断允许位 0: 禁止定时器0溢出中断 1: 允许定时器0溢出中断 0 EX0 外部中断0允许位 0: 禁止外部中断0 1: 允许外部中断0 IEN1 中断允许寄存器

位号码 6 位助记符 说明 ETWI TWI溢出中断允许位 0: 禁止TWI中断 1: 允许TWI中断 EPWM PWM中断允许位 0: 禁止PWM中断 1: 允许PWM中断 3 ESEC 5 半秒中断允许位 0: 禁止半秒中断 1: 允许半秒中断 EUART1中断允许位 0: 禁止EUART1中断 1: 允许EUART1中断 外部中断2允许位 0: 禁止外部中断2 1: 允许外部中断2 SPI中断允许位 0: 禁止SPI中断 1: 允许SPI中断 2 ES1 1 EX2 0 ESPI 注意:系统复位后所有中断都是禁止的。

3.4 中断标志

每个中断源都有自己的中断标志,当产生中断时,硬件会置起相应的标志位,在中断摘要表中会列出中断标志位。

外部中断源产生外部中断INTx(x = 0/1/2)时,如果中断为边沿触发,CPU在响应中断后,各中断标志位(TCON寄存器的IE0/1位,EXF0寄存器的IE2位)被硬件清0;如果中断是低电平触发,外部中断源引脚电平直接控制中断标志,而不是由片上硬件控制。

定时器0/1的计数器溢出时,TCON寄存器中的TFx(x = 0, 1)中断标志位会被置1,产生定时器0/1中断,CPU在响应中断后,标志被硬件自动清0。

T2CON寄存器中的计数器2溢出标志位TF或EXF2标志位置1时,产生定时器2中断,CPU在响应中断后,标志不会被硬件自动清0。事实上,中断服务程序必须先确定该中断是

22

由TF2还是EXF2产生的,然后再将相应的标志软件清0。

SCON寄存器的标志RI或TI置1时,产生EUARTx(x = 0, 1)中断,CPU在响应中断后,标志不会被硬件自动清0。事实上,中断服务程序必须先判断是收中断还是发中断,然后再相应的标志位软件清0。

ADCON寄存器的ADCIF标志位置1时,产生ADC中断。如果中断产生,ADCDH/ADCDL中的AD转换结果是有效的。如果ADC模块的连续比较功能打开,那么在每次转换中,如果转换结果小于比较值时,ADCIF标志位为0;如果转换结果大于比较值时,ADCIF标志位置1,ADCIF中断标志必须由软件清除。

SPSTA寄存器的SPIF标志位或SPSTA寄存器的MODF置1时,产生SPI中断,该中断标志位必须由软件清0。

RTCCON寄存器的HSECIF标志位置1时,产生半秒中断,标志必须由软件清0。 PWMC寄存器的PWMIF标志位置1时,产生PWM中断,标志必须由软件清0。 TWICON寄存器的TWIIF标志位置1时,产生TWI中断,标志必须由软件清0。 表:定时器X/计数器X控制寄存器(X=0,1)

表:外部中断标志寄存器0

3.5 中断向量

当一个中断产生时,程序计数器内容被压栈,相应的中断向量地址被载入程序计数器。中断向量的地址在中断汇总表中详细列出。

23

3.6 中断优先级

每个中断源都可被单独设置为4个中断优先级之一,分别通过清0或置1 IPL0,IPH0,IPL1,IPH1中相应位来实现。但OVL不可屏蔽中断无需IPH/IPL控制,在所有中断源中享有最高优先级(除复位外)。中断优先级服务程序描述如下:

响应一个中断服务程序时,可响应更高优先级的中断,但不能响应同优先级或低优先级的另一个中断。

响应最高级中断服务程序时,不响应其它任何中断。如果不同中断优先级的中断源同时申请中断时,响应较高优先级的中断申请。

如果同优先级的中断源在指令周期开始时同时申请中断,那么内部查询序列确定中断请求响应顺序。

表:中断优先级控制寄存器

3.7 中断处理

每个中断标志在每个机器周期的时钟上升沿都会被采样。如果一个标志被置起,那么CPU捕获到后中断系统就会调用一个长转移指令(LCALL)以调用其中断服务程序,但由硬件产生的LCALL会被下列任何条件阻止:

1) 同级或更高级的优先级中断在运行中。

2) 当前的周期不是执行中指令的最后一个周期。换言之,正在执行的指令完成前,任

何中断请求都得不到响应。 3) 正在执行的是一条RETI。换言之,在指令RETI执行完后,不会马上响应中断请求,

而至少在执行RETI指令后一条其它指令之后才会响应,即:是在程序返回后再执行一条指令后响应中断。

注意:因为更改优先级通常需要2条指令,在此期间,严重建议关闭相应的中断以避免在修改优先级过程中产生中断。如果当模块状态改变而中断标志不再有效时,将不会响应此中断。

24

每一个轮询周期只查询有效的中断请求。

由硬件产生的LCALL把程序计数器中的内容压入堆栈(但不保存PSW),然后将相应中断源的向量地址(参照中断向量表)载入程序计数器(PC)。

中断服务程序从指定地址开始,到RETI指令结束。RETI指令通知处理器中断服务程序结束,然后把堆栈顶部两字节弹出,重载入程序计数器中,执行完中断服务程序后程序回到原来停止的地方。虽然子程序返回指令RET也可以返回到原来地址继续执行,但是中断系统仍然认为刚才执行的那个优先级的中断仍在进行中,这种情况下,当同一优先级或低优先级中断将不会被响应。即,会造成系统的误判从而影响后续中断的响应

3.8 中断的响应时间

如果系统检测出一个中断,这个中断的请求标志位就会在被检测后的每个机器周期被置起。内部电路会保持这个值直到下一个机器周期,CPU会在第三个机器周期产生中断。如果响应有效且条件允许,在下一个指令执行的时候硬件LCALL指令将调用请求中断的服务程序,否则中断被挂起。LCALL指令调用程序需要7个机器周期。因而,从外部中断请求到开始执行中断程序至少需要3+7个完整的机器周期。

当中断请求因前述的三个情况受阻时,中断响应时间会加长。如果同级或更高优先级的中断正在执行,额外的等待时间取决于正执行的中断服务程序的长度。

如果正在执行的指令还没有进行到最后一个周期,例如正在执行RETI指令,则完成正在执行的RETI指令,该指令需要8个周期,加上为完成下一条指令所需的最长时间20个机器周期(如果该指令是16位操作数的DIV,MUL指令),若系统中只有一个中断源,再加上LCALL调用指令7个机器周期,则最长的响应时间是2+8+20+7个机器周期。 所以,中断响应时间一般大于10个机器周期小于37个机器周期。

3.9 外部中断

SH79F32有3个外部中断输入。其中每个外部中断源都有自己的向量地址。每个外部中断都有两种触发方式:电平触发和边沿触发。至于是用哪种触发方式是通过设置TCON寄存器中的IT1(外部中断1)、IT0(外部中断0)和寄存器EXF0中的IT2(外部中断2)来确定的。

1) 如果ITx=0(x=0,1,2),那么相应的外部中断x(x=0,1,2)的触发方式就被设置为低

电平触发,此时系统通过检测相应的外部中断输入端INTx(x=0,1,2)管脚上的信号电平来产生中断。在此触发模式下,外部中断有效信号(低电平)必需一直保持有效,直到产生所请求的中断为止,此过程需要2个系统时钟周期。在中断服务程序返回之前,外部中断请求输入必需无效(即外部中断请求输入已经由低电平变为高电平),否则系统返回主程序后会再次响应中断。这种中断模式下,不必清除中断标志IEx(x=0,1,2),因为中断只与输入电平有关。 2) 如果ITx=1(x=0,1,2),则外部中断x的触发方式就被设置为边沿触发。在这种触发

25

模式下,如果在一个周期内INTx(x=0,1,2)的管脚上连续采样为高电平而紧接着的下个周期采样为低电平(由此可见是下降沿触发),此时TCON寄存器中的中断请求标志位置1,产生一个中断请求。由于CPU在每个系统时钟周期对外部中断管脚进行一次采样,所以在相应中断管脚上输入的高、低电平信号至少要持续一个机器周期,以确保正确的电平信号被采到而且使相应的IEx(x=0,1,2)置1。当调用中断服务程序后,CPU自动将IEx清零。

3.10 外部汇总表

26

四、SH79F32单片机的定时器/计数器

4.1 概述

在工业检测与控制中,许多电路系统都要用到计数器或定时器功能。比如要产生精确的定时、对外部输入脉冲进行计数等。SH79F32有3个定时器(定时器0,1,2),其中定时器1和定时器2与标准的8051兼容,定时器2与标准的8052兼容,具有加/减计数功能,和可编程的时钟输出功能。都可被设置为定时器或计数器,用作定时器功能时,每经过一个系统时钟,寄存器加1;用作计数器功能时,外部输入脚Tx(x = 0,1,2)每产生一次1到0的跳变时,寄存器加1。

4.2 定时器0和定时器1

每个定时器的两个数据寄存器(THx & TLx(x = 0,1))可作为一个16位寄存器来访问。它们的工作方式由寄存器TCON和TMOD寄存器中相应的控制位来控制。如果将IEN0寄存器的ET0和ET1位,置1允许定时器0和定时器1中断。(详见中断章节)

定时器x(x=0,1)的工作方式由计数器/定时器方式寄存器(TMOD)中的工作方式选择位(Mx1-Mx0也表示为Mx[1:0]其中x=0,1)决定。

定时器x 定时器方式选择位

1) 当Mx[1:0]=00(即,Mx1=0,Mx0=0):此时定时器器x(x=0,1)的工作于方式0,13

位加计数计数器/定时器,忽略TLx的第7-5位。 2) 当Mx[1:0]=01:方式1,16位加计数计数器/定时器

3) 当Mx[1:0]=10:方式2,8位自动重载向加数计数器/定时器 4) 当Mx[1:0]=11:方式3(只用于定时器0),两个8位加计数定时器 1. 方式0:13位定时器/计数器

在方式0中,定时器x(x=1,0)为13位计数器/定时器。THx寄存器存放13位计数器/定时器的高8位,TLx存放低5位(TLx.4-TLx.0),TLx的高三位(TLx.7-TLx.5)是不确定的,在读取时应该被忽略。当13位定时器寄存器进行加计数并溢出时,系统会将相应的定时器溢出标志TFx(x=1,0)置1。如果此时定时器x中断被允许,将会产生一个中断。可用C/位来选择计数器/定时器的时钟源。

1) 如果C/ = 1,定时器x输入引脚(Tx)的电平从高到低跳变,使定时器x数据寄

存器加1。

2) 如果C/ = 0,选择系统时钟为定时器x的时钟源。

GATE位的状态决定定时器/计数器运行控制取决于TRx(在TCON控制寄存器中,是定时器x启动、停止控制位)一个条件还是取决于TRx和

27

引脚(x=1,0)这两个条件。(即

是:当GATEx = 0成立或者GATEx = 1且输入信号有效时,TRx置1打开定时器。

1) 当GATEx=0时,如果TRx=1则允许计数器Tx对脉冲进行计数 2) 当GATEX=1时,如果TRx=1而且

=1,则允许Tx对脉冲进行计数,故在GATEx=1

两个条件来共同控制的。在此需要

这种状态下,计数器是否计数是有TRx和

注意的是:控制位TRx置1将不会强行定时器的复位,这意味着如果TRx置1,

定时器寄存器将从上次TRx清0时的值开始计数。所以在允许定时器之前,应该设定定时器寄存器的初始值。

2. 方式1:16位定时器/计数器

除了使用16位定时器/计数器之外,方式1的运行与方式0一致。打开和配置计数器/定时器也如同方式0。

3. 方式2:8位带自动重载的计数器/定时器

方式0和方式1中计数器的最大特点是计数值溢出后,计数器的值自动清零。因此在循环定时或者循环计数应用时就存在用指令反复装入计数初始值的问题。这不仅影响定时精度,而且也给程序设计带来麻烦。方式2就是针对这个问题而设置的。

方式2中,定时器x是8位自动重载计数器/定时器。低位寄存器TLx存放计数值,高位寄存器THx存放重载值。当在TLx中的计数器溢出至0x00时,置起定时器溢出标志TFx,寄存器THx的值被重载入寄存器TLx中。如果定时器中断使能,当TFx置1时将产生一个中断。而在THx中的重载值不会改变。在允许定时器正确计数开始之前,TLx必须初始化为所需的值。

除了自动重载功能外,方式2中的计数器/定时器的使能和配置与方式1和0是一致的。

28

4. 方式3:两个8位计数器/定时器(仅限定时器0) 在方式3中,计数器/定时器0被配置成为两个独立运行在TL0和TH0上的8位计数器/定时器。

1) 其中TL0上的8位定时器使用定时器0在TCON中的控制位TR0、TF0和在TMOD

中的状态位C/ 、GATE0。TL0可以用系统时钟或者外部信号作为其时钟源。

2) TH0上的那个计数器被强制限制为定时器,其时钟源为系统时钟。TH0由定时器1

的控制位TR1控制使能,溢出时定时器1溢出标志TF1置1,控制定时器1中断。 定时器0工作在方式3时,定时器1可以工作在方式0、1或2,但是不能使用溢出标志位TF1,从而也就不能产生中断,一般可以用来产生串口的波特率。更一般情况下的考虑是:当定时器1用于串口通信的波特率发生器时,定时器才工作于方式3。TH1和TL1只能用作定时器功能,时钟源来自系统时钟,GATE1位无效。T1输入脚的上拉电阻也无效。定时器1运行控制由方式控制位(M1[1:0])使能与否控制,因为TR1被定时器0占用。定时器1在方式0、1或2时使能,在方式3时被关闭。

注意: 当定时器1 作为波特率发生器时,读取或写入TH1/TL1 会影响波特率的准确性,因此也会引起通信出错。

定时器/计数器1,0的控制寄存器(TCON)

29

定时器/计数器x的方式寄存器(x=1,0)

定时器/计数器x数据寄存器1(x=0,1)

5. 四种工作方式的差异

1) 定时方式 0 时,Timer0 为13 位定时器,无自动重载,最大定时计数值等于2^ 13

= 8192,其中定时初值高8 位存放在TH0,低5 位存放在TL0 的低5位,TL0 的bit5~7 忽略不用,设置定时初值时补以0。下面我们以系统时钟8.192MHz,Timer0

30

方式0,定时0.5ms 为例,讲解方式0 定时初值的设置: 例:

定时计数值 = 500us / (1/8.192) = 4096

定时初值 = 2 ^ 13 – 4096 = 4096 = 1000000000000B

取前8 位放入TH0,TH0 = 10000000B = 0x80取后5 位放入TL0,bit5~bit7 补以0,TL0=00000000B=0x00。

2) 定时方式 1 时,Timer0 为16 位定时器,无自动重载,最大定时计数值等于2 ^ 16=

65536,其中高8 位存放在TH0,低8 位存放在TL0。下面我们以系统时钟8.192MHz,Timer0 方式1,定时5ms 为例,讲解工作方式1 时定时初值的设置。 例:

定时计数值 = 5000us / (1/8.192) = 40960

定时初值 = 2 ^ 16 – 40960 = 24576 = 1100000000000000B 取前8 位放入TH0,TH0 = 11000000B = 0xC0 取后8 位放入TL0,TL0 = 00000000B = 0x00

3) 定时方式 2 时,Timer0 为8 位定时器,有自动重载,最大定时时间等于2 ^ 8 =256,

其中TL0 存放定时初值,TH0 存放自动重载值。下面我们以系统时钟8.192MHz,Timer0 方式2,定时30us 为例,讲解方式2 定时初值的设置。 例:

定时计数值 = 30us / (1/8.192) = 246

定时初值 = 2 ^ 8 –246 = 10 =00001010b

将定时初值放入TL0,TL0 = 00001010b = 0x0A 将自动重载值放入TH0,TH0= 00001010b = 0x0A

4) 定时方式 3 时,Timer0 被当作两个独立的8 位定时器/计数器,分别为TL0 和

TH0。TL0 可以作为定时器,也可作为计数器,但TH0 只能用作计数器。TL0 使用Timer0 的标志位TF0,控制位TR0、C/T0、GATE0;TH0 使用Timer1 的TF1 和TR1。当Timer0 为方式3 时,Timer1 不能用作定时器,只能用作波特率发生器。

6. 定时初值的设置

要设置定时初值,我们首先要了解定时器工作原理。中颖8051 采用加计数方式(即从0x0000 计数到0xffff),当设置完定时初值,并开启定时器时,每经过一个系统时钟,定时值加一。所以我们可以用定时时间除以系统时钟周期,得到定时计数值。再用定时最大值(溢出值)减去定时计数值,就能够得到我们要设置的定时初值,定时初值存在TH0 和TL0 中。 中颖SH79FXX 系列是增强型高速8051,采用流水线结构,其一个指令周期只需要一个振荡周期。也就是说若系统时钟为8M Hz,则运行一条指令所用时间T = 1/8 微秒;

下面我们以系统时钟8MHz,定时1ms( = 1000μs)为例,讲解定时初值的设置:

定时计数值 = 定时时间 / 系统时钟周期 = 1000us / (1/8μs) = 8000, 定时初值 = 定时最大值 – 定时计数值 =定时最大值 – 8000。 其中定时最大值根据工作方式的不同而不同。

6.3 定时器2

定时器/计数器2由两个8位数据寄存器(TH2和TL2)构成,这两个寄存器可以作为一个16位寄存器来访问,由寄存器TCON2和TMOD2控制。设置IEN0寄存器中的ET2位能允许定時器2中断。(详见中断章节)

31

定时器/计数器2的工作模式与定时器0和定时器1相似。由C/选择系统时钟(定时器)或外部引脚T2(计数器)作为定时器时钟输入。通过所选的引脚设置TR2允许定时器2/计数器2数据寄存器计数。

4.3.1定时器/计数器2的工作方式

定时器2有4种工作方式:捕获/重载、带自动重载方式的加或减计数器、波特率发生器和可编程时钟输出。RCLK,TCLK和CP/定时器2的工作方式选择

的组合使能选择这些方式。

1. 方式0:16位捕获

在捕获方式中,控制寄存T2CON中的EXEN2位有两个选项。

1) 如果EXEN2 = 0,定时器2作为16位定时器或计数器,如果IET2被允许的话,定

时器2能设置TF2溢出产生一个中断。

2) 如果EXEN2 = 1,定时器2执行相同操作,但是在外部输入T2EX上的下降沿将使系

统将TH2和TL2中的当前值分别被捕获(复制)到RCAP2H和RCAP2L中,此外,在T2EX上的下降沿也能引起在T2CON中的EXF2被置1。如果IET2被允许,EXF2位也像TF2一样也产生一个中断

2. 方式1: 16位自动重载定时器 在16位自动重载工作方式下,定時器2可以被配置为加计数或减计数/定时。这个功能通过T2MOD中的DCEN位(减计数使能)进行选择。系统复位后,DCEN位复位值为0,定时器2默认为加计数。当将DCEN位置1时,定时器2加计数或减计数取决于T2EX引脚上的电平。

当DCEN = 0,通过设定控制寄存器T2CON中的位EXEN2位的置可以获得两个选项。 1) 如果T2CON中的EXEN2 = 0,定时器2递增到0FFFFH,在溢出后置起TF2位,同时定时

器自动将用户前面程序写入寄存器RCAP2H和RCAP2L的16位值装入TH2和TL2寄存器中。

2) 当EXEN2 = 1时,计数器的溢出或在管脚T2EX上的下降沿都能触发16位数据的重载

和将EXF2置1。如果IET2被使能,TF2和EXF2位都能产生一个中断。

模式控制寄存器T2MOD中位DCEN置位,也就是说DCEN=1时,T2EX引脚上的信号控制计数的方向(加计数或者减计数)而EXEN2控制无效。

T2EX置1可使定时器2递增计数(加计数)。当计数值记到0FFFFH时产生溢出,然后将TF2置1。同时溢出也会使系统将RCAP2H和RCAP2L中的16位值重载入定时器寄存器。

T2EX清0可使定时器2递减计数。当TH2和TL2中的值分别等于RCAP2H和RCAP2L的

32

值时,定时器产生下溢(underflow)。同时将TF2置1,然后将数据0FFFFH重新载入计数器2的寄存器TH2和TL2。

无论定时器2产生的是上溢(本节前文中翻译为溢出,overflows)还是下溢

(underflows),EXF2位的值都被当做结果的第17位。在此工作方式下,EXF2不作为中断标志。

3. 方式2:波特率发生器

通过设置T2CON寄存器中的TCLK和/或RCLK选择波特率发生器作为定时器2的工作方式。在串行通讯的过程中,如果定时器2作为接收器或发送器的波特率发生器,而定时器1相应的作为另一种的波特率发生器,那么接收器和发送器的波特率可以不同。

定时器2产生溢出时,会将存储在寄存器RCAP2H和RCAP2L中的值分别重新载入定时器2计数器TH2和TL2中,但不会产生中断。

如果EXEN2被置1,在T2EX脚上的下降沿将EXF2置1,但不会引起重载。因此当定时器2作为波特率发生器时,T2EX可作为一个额外的外部中断。

在EUART方式1和3中的波特率由定时器2的溢出率根据下列方程式决定。

;C/=0

; C/=1

本系统在默认情况下UART1的波特率发生器就是定时器2。 如果控制寄存器T2CON中的TCLK=0和RCLK=0那么波特率为:

如果控制寄存器T2CON中的TCLK=1或者RCLK=1那么波特率为:

4. 方式3:可编程时钟输出

管脚P3.7可以通过编程来输出占空比为50%的时钟周期。通过将C/位清零并且将T2OE置1,以将定时器2设定为时钟发生器,该时钟发生器的启动与停止由控制位TR2控制。

这种方式包括2种子方式:

(1) 如果RCLK = 1或TCLK = 1,T2输出占空比为50%的时钟。在这个子方式中,

定时器2溢出不产生中断,所以定时器2可以同时以相同频率用作波特率发生器和时钟输出。

(2) 如果满足RCLK = 0且TCLK = 0,DCEN=0、CP/RL2=0时T2输出占空比为50%

的时钟。在此子模式下定时器2的每次溢出将会触发中断。在EXEN2被置1

33

的条件下,在T2EX上出现一个下降沿时就会将EXF2置1。这样T2EX引脚可以作为一个外部中断输入口。

注意:

1) TF2和EXF2都能引起定時器2的中断请求,两者有相同的向量地址。 2) 当事件发生时或其他任何时间都能由软件设置TF2和EXF2为1,只有软件以及硬件复位才

能使之清0。

3) 当EA = 1且ET2 = 1时,设置TF2或EXF2为1能引起定時器2中断。

4) 当定時器2作为波特率发生器时,读取或写入TH2/TL2、写入RCAPH2/RCAPL2会影响波特

率的准确性,因此也会引起通信出错。

4.3.2 定时器/计数器2的相关寄存器

定时器2的控制寄存器

位编号 7 位助记符 TF2 说明 定时器2溢出标志位: 0: 无溢出(必须由软件清0) 1: 溢出(如果RCLK = 0和TCLK = 0,由硬件设置) 6 EXF2 T2EX引脚外部事件输入(下降沿)被检测到的标志位 0: 无外部事件输入(必须由软件清0) 1: 检测到外部输入(如果EXEN2 = 1,由硬件设置) 5 RCLK EUART0接收时钟控制位 0: 定时器1产生接收波特率 1: 定时器2产生接收波特率 4 TCLK EUART0发送时钟控制位 0: 定时器1产生发送波特率 1: 定时器2产生发送波特率 3 EXEN2 T2EX引脚上的外部事件输入(下降沿)用作重载/捕获触发器允许/禁止控制位 0: 忽略T2EX引脚上的事件 1: 当定时器2不做为EUART时钟(T2EX始终包括上拉电阻)时,检测到T2EX引脚上一个下降沿,产生一个捕获或重载 2 TR2 定时器2开始/停止控制位 0: 停止定时器2 1: 开始定时器2 1 C/ 定时器2定时器/计数器方式选定位 0: 定时器方式,T2引脚用作I/O端口 34

1: 计数器方式,内部上拉电阻被打开 0 CP/ 捕获/重载方式选定位 0: 16位带重载功能的定时器/计数器 1: 16位带捕获功能的定时器/计数器

定时器2方式控制寄存器 、

定时器2重载/捕获寄存器和数据寄存器

附录2,指令集

(中文版)中的110页到114页

35

本文来源:https://www.bwwdw.com/article/4c3p.html

Top