第06章 单片机串行通信系统 习题解答

合集下载

单片机原理及应用第5、6、7、8章习题

单片机原理及应用第5、6、7、8章习题

第5、6、7、8章习题一、问答题1.说明51单片机读端口锁存器的必要性,为什么? 答:2.请说明为什么使用LED 需要接限流电阻,当高电平为+5V 时,正常点亮一个LED 需要多大阻值的限流电阻(设LED 的正常工作电流为8~mA ,导通压降为0.6V ),为什么? 答:3.简述在使用普通按键的时候,为什么要进行去抖动处理,如何处理。

答:4.简述LED 数码管动态扫描的原理及其实现方式。

答:5.为什么51单片机在读口的引脚状态时,许先向端口写“1”,请用图5-1 P1结构图加以说明。

答:5.简述89c51各IO 口的驱动能力。

答:6.什么是中断?中断与子程序最本质的区别?答:写锁存器内部总线图5-1 P1口结构图7.编制中断服务程序时,为什么在主程序的初始化程序中,必须设置EA=1 这条指令(或达到同样功能的对IE赋值的指令),以及在中断服务程序中为什么通常需要保护现场和恢复现场?答:8.单片机89C51有哪些中断源,CPU对其中断如何请求?答:9.简述单片机89C51中断的自然优先级顺序,如何提高某一中断源的优先级别。

答:10.简述51系列单片机中断响应的条件。

答:11.用汇编语言编程时,在51系列单片机执行中断服务程序的指令较多时,为什么一般都要在入口地址(又称中断矢量地址)开始的地方放一条跳转指令?答:12.为什么一般都把主程序的起始地址放在0030H之后?答:13.中断服务子程序返回指令RETI和普通子程序返回指令RET的区别?答:14.简述51单片机定时/计数器4种工作模式的特点。

答:15.定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关?答:16.画出51单片机计数/定时器方式1的逻辑结构框图,说明它们的工作原理,如何使用门控和非门控启动计数的方法。

答:17.在使用8051的定时器/计数器前,应对它进行初始化,其步骤是什么?答: (1)确定T/C的工作方式——编程TMOD寄存器;(2)计算T/C中的计数初值,并装载到TH和TL;(3)T/C在中断方式工作时,须开CPU中断和源中断——编程IE寄存器;(4)启动定时器/计数器——编程TCON中TR1或TR0位。

单片机原理及应用(第二版)6-10章 习题答案

单片机原理及应用(第二版)6-10章 习题答案

第6章 AT89S51的定时/计数器参考答案1.答:(A )对;(B )错;(C )错;(D )错; 2.答:因为机器周期: 所以定时器/计数器工作方式0下,其最大定时时间为同样可以求得方式1下的最大定时时间为262.144ms ;方式2下的最大定时时间为1024ms 。

3.答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。

定时时间与时钟频率和定时初值有关。

4.答:由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。

5.答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。

除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。

参考程序如下:ORG 0000H LJMP MAIN ORG000BHLJMP IT0PMAIN: MOV TMOD,#06H ;定时器/计数器T0为计数方式2 MOV TL0,#156;计数100个脉冲的初值赋值MOV TH0,#156 SETB GATE ;打开计数门 SETB TR0 ;启动T0,开始计数 SETB ET0 ;允许T0中断 SETB EA ;CPU 开中断CLRF0;设置下一轮为定时方式的标志位WAIT: AJMP WAIT IT0P: CLREA ;CPU 关中断)(410312126s f T OSCcy μ=⨯==)(192.81042261313ms T T C MAX =⨯⨯=⨯=-JB F0,COUNT ;F0=1,转计数方式设置MOV TMOD,#00H ;定时器/计数器T0为定时方式0MOV TH0,#0FEH ;定时1ms初值赋值MOV TL0,#0CHSETB EARETICOUNT: MOV TMOD,#06HMOV TL0,#156SETB EARETI6. 答:定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,比如波特率的产生。

单片机原理及应用第2版课后答案第6章习题答案

单片机原理及应用第2版课后答案第6章习题答案

单片机原理及应用第2版课后答案第6章习题答案1.异步通信和同步通信的主要区别是什么?MCS-51串行口有没有同步通信功能?答案:异步通信因为每帧数据都有起始位和停止位,所以传送数据的速率受到限制。

但异步通信不需要传送同步脉冲,字符帧的长度不受限制,对硬件要求较低,因而在数据传送量不很大。

同步通信一次可以连续传送几个数据,每个数据不需起始位和停止位,数据之间不留间隙,因而数据传输速率高于异步通信。

但同步通信要求用准确的时钟来实现发送端与接收端之间的严格同步。

MCS-51串行口有同步通信功能。

2.解释下列概念:(1)并行通信、串行通信。

(2)波特率。

(3)单工、半双工、全双工。

(4)奇偶校验。

答案:(1)并行通信:数据的各位同时进行传送。

其特点是传送速度快、效率高,数据有多少位,就需要有多少根传输线。

当数据位数较多和传送距离较远时,就会导致通信线路成本提高,因此它适合于短距离传输。

串行通信:数据一位一位地按顺序进行传送。

其特点是只需一对传输线就可实现通信,当传输的数据较多、距离较远时,它可以显著减少传输线,降低通信成本,但是串行传送的速度慢。

(2)波特率:每秒钟传送的二进制数码的位数称为波特率(也称比特数),单位是bp(bitperecond),即位/秒。

(3)单工:只允许数据向一个方向传送,即一方只能发送,另一方只能接收。

半双工:允许数据双向传送,但由于只有一根传输线,在同一时刻只能一方发送,另一方接收。

全双工:允许数据同时双向传送,由于有两根传输线,在A站将数据发送到B站的同时,也允许B站将数据发送到A站。

(4)奇偶校验:为保证通信质量,需要对传送的数据进行校验。

对于异步通信,常用的校验方法是奇偶校验法。

采用奇偶校验法,发送时在每个字符(或字节)之后附加一位校验位,这个校验位可以是“0”或“1”,以便使校验位和所发送的字符(或字节)中“1”的个数为奇数——称为奇校验,或为偶数——称为偶校验。

接收时,检查所接收的字符(或字节)连同奇偶校验位中“1”的个数是否符合规定。

51单片机串行通信接口

51单片机串行通信接口

工 作 方 式 选 择 位
多允 机许 通接 信收 控控 制制 位位
发 接发接 送 收送收 数 数中中 据 据断断 第 第标标 九 九志志 位位
北京交通大学
18
各位功能说明如下: SM0 SM1:串口工作方式选择位
00 方式0: 同步移位寄存器 波特率=主振频率/12
01 方式1: 8位异步,波特率可变
⑵在双机通信中,该位作为奇偶校验位; ⑶在多机通信中用来表示D7-D0是地址帧或数据帧
即:
D8=0:表示数据帧; D8=1:表示地址帧
北京交通大学
20位是接收到的第9位数据。 方式1,SM2=0,停止位。方式0,不用。
⑵在多机通信中是地址帧(RB8=1)和数据帧 (RB8=0)的标识位。
北京交通大学
34
方式2、3的区别是:波特率设置不同 方式2的波特率是固定的。即:
波特率=fosc/32或fosc/64 方式3的波特率是可变的。即:
波特率 2smod
fosc
32 12 (256 X )
X
256
fosc (2s mod ) 384 波特率
北京交通大学
35
表1 波特率与时间常数
第6章 串行通信接口
本章主要内容 • 串行数据通信基本原理 • MCS-51单片机串行口 • 串行口应用举例
北京交通大学
1
一、串行数据通信基本原理
计算机的两种方式数据传送:并行和串行
并行传送的特点:
各数据位同时传送,传送速度快、效率高。
但需要的数据线多,因此传送成本高。并行数据
传送的距离通常小于30米。
3.直到停止位到来之后把它送入到RB8中,并 置位RI,通知CPU从SBUF取走接收到的一个字符。

单片机技术与应用各章习题答案

单片机技术与应用各章习题答案

单片机技术与应用各章习题答案第一章:单片机概述与应用领域1. 单片机是指在一个芯片上集成了微处理器核心、存储器和各种外设接口电路的微型计算机系统。

它具有体积小、功耗低、成本低等特点,广泛应用于各个领域。

2. 单片机的分类有多种方式,按照处理器核心可以分为8位、16位和32位单片机;按照指令集结构可以分为CISC和RISC单片机;按照应用领域可以分为通用型和专用型单片机等。

3. 单片机在工业控制、汽车电子、消费电子、通信设备等领域有着广泛应用。

例如,它可以运用于家电控制、智能家居、无人机控制等领域。

4. 单片机系统由单片机核心、存储器、外设接口电路和时钟电路等部分组成。

其中,单片机核心是整个系统的核心和控制中心。

第二章:单片机的基本结构与指令系统5. 单片机的基本结构包括中央处理器(CPU)、存储器(存储程序和数据)、输入输出(I/O)端口和计时/计数器等。

它们通过总线进行连接和数据传输。

6. 单片机的指令系统决定了其工作方式和功能。

指令由操作码和操作数组成,用于完成特定的指令功能。

7. 单片机的指令系统可以分为数据传输指令、算术运算指令、逻辑运算指令、移位指令等。

不同的指令功能可以通过编程实现。

8. 单片机的程序是由一系列指令组成,按照指令执行的顺序顺序执行。

其中,程序计数器(PC)用于存储当前执行的指令地址。

第三章:单片机的输入输出与中断系统9. 单片机的输入输出包括数字输入输出和模拟输入输出两种方式。

数字输入输出使用端口进行数据传输,而模拟输入输出则需要辅助模块进行处理。

10. 单片机的中断系统是为了实现对外部事件的响应而设计的。

当发生特定的中断事件时,单片机可以暂停当前任务,执行相应的中断服务程序。

11. 单片机的端口是实现输入输出的重要接口。

输入端口用于接收外部信号,输出端口用于向外部设备发送信号。

12. 单片机的中断是通过中断向量表实现的。

中断向量表是一个存储特定中断服务程序地址的表格,通过查表可以找到相应的服务程序。

第6章思考题及习题6参考答案

第6章思考题及习题6参考答案

第6章思考题及习题6参考答案一、填空1、AT89S51的串行异步通信口为(单工/半双工/全双工)。

答:全双工。

2. 串行通信波特率的单位是。

答:bit/s3. AT89S52的串行通信口若传送速率为每秒120帧,每帧10位,则波特率为答:12004.串行口的方式0的波特率为。

答:fosc/125.AT89S51单片机的通讯接口有和两种型式。

在串行通讯中,发送时要把数据转换成数据。

接收时又需把数据转换成数据。

答:并行,串行,并行,串行,串行,并行6.当用串行口进行串行通信时,为减小波特率误差,使用的时钟频率为 MHz。

答:11.05927.AT89S52单片机串行口的4种工作方式中,和的波特率是可调的,与定时器/计数器T1的溢出率有关,另外两种方式的波特率是固定的。

答:方式1,方式38.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式。

答:方式1。

9.在串行通信中,收发双方对波特率的设定应该是的。

答:相同的。

10.串行口工作方式1的波特率是。

答:方式1波特率=(2SMOD/32)×定时器T1的溢出率二、单选1.通过串行口发送或接收数据时,在程序中应使用。

A.MOVC指令B.MOVX指令C.MOV指令D.XCHD指令答:C2.AT89S52的串行口扩展并行I/O口时,串行接口工作方式选择。

A. 方式0B.方式1C. 方式2D.方式3答:A3. 控制串行口工作方式的寄存器是。

A.TCON B.PCON C. TMOD D.SCON答:D三、判断对错1.串行口通信的第9数据位的功能可由用户定义。

对2.发送数据的第9数据位的内容是在SCON寄存器的TB8位中预先准备好的。

对3.串行通信方式2或方式3发送时,指令把TB8位的状态送入发送SBUF中。

错4.串行通信接收到的第9位数据送SCON寄存器的RB8中保存。

对5.串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定。

单片机原理及接口技术第6章习题答案

单片机原理及接口技术第6章习题答案

第6章习题答案1、定时器模式2有什么特点?适用于什么场合?答:(1) 模式2把TL0(或TL1)配置成一个可以自动重装载的8位定时器/计数器。

TL0计数溢出时不仅使溢出中断标志位TF0置1,而且还自动把TH0中的内容重新装载到TL0中。

TL0用作8位计数器,TH0用以保存初值。

(2) 用于定时工作方式时间(TF0溢出周期)为()82T H 012T =-⨯⨯初值振荡周期,用于计数工作方式时,最大计数长度(TH0初值=0)为28=256个外部脉冲。

这种工作方式可省去用户软件重装初值的语句,并可产生相当精确定时时间,特别适于作串行波特率发生器。

2、单片机内部定时方式产生频率为100KH Z 等宽矩形波,假定单片机的晶振频率为12MH Z ,请编程实现。

答:5100,110(00)Z f KH t T -==⨯采用定时器选择工作模式50.510-⨯=⨯⨯136(2-X )12/(1210)13(2)5X -=81871111111111011X ==T0低5位:1BHT0高8位:FFHMOV TMOD,#00H ;设置定时器T0工作于模式0MOV TL0,#1BH ;设置5ms 定时初值MOV TH0,#0FFHSETB TR0 ;启动T0LOOP:JBC TF0,L1 ;查询到定时时间到?时间到转L1SJMP LOOP ;时间未到转LOOP ,继续查询L1:MOV TL0,#1BH ;重新置入定时初值MOV TH0,#0FFHCPL P1.0 ;输出取反,形成等宽矩形波SJMP LOOP ;重复循环3、89C51定时器有哪几种工作模式?有何区别?答:有四种工作模式:模式0,模式1,模式2,模式3(1) 模式0:选择定时器的高8位和低5位组成一个13位定时器/计数器。

TL 低5位溢出时向TH 进位,TH 溢出时向中断标志位TF 进位,并申请中断。

定时时间t=(213-初值)×振荡周期×12;计数长度位213=8192个外部脉冲(2) 模式1:与模式0的唯一差别是寄存器TH 和TL 以全部16位参与操作。

单片机实用技术(钱游)项目六课后习题及答案

单片机实用技术(钱游)项目六课后习题及答案

6-1 、什么是异步串行通信?它有哪些特点?答: 所谓异步串行通信是指具有不规则数据段传送特性的串行数据传输,数据是以字符为单位传送的。

异步串行通信的数据格式异步通信数据帧的第一位是开始位,在通信线上没有数据传送时处于逻辑“1”状态。

当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。

起始位通过通信线传向接收设备,当接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。

因此,起始位所起的作用就是表示字符传送开始。

当接收设备收到起始位后,紧接着就会收到数据位。

数据位的个数可以是5,6,7或8位的数据。

在字符数据传送过程中,数据位从最低位开始传输。

数据发送完之后,可以发送奇偶校验位。

奇偶校验位用于有限差错检测,通信双方在通信时需约定一致的奇偶校验方式。

就数据传送而言,奇偶校验位是冗余位,但它表示数据的一种性质,这种性质用于检错,虽有限但很容易实现。

在奇偶位或数据位之后发送的是停止位,可以是1位、1.5位或2位。

停止位是一个字符数据的结束标志。

它的主要特点:由于异步通信每传送一帧有固定格式,通信双方只需按约定的帧格式来发送和接收数据,所以硬件结构比同步通信方式简单;此外,它还能利用校验位检测错误。

6-2、51系统单片机串行口由哪些功能部件组成?各有何作用?答:AT89C51单片机的串行口吊SCON、SBUF及若干门电路构成。

SCON用于设置串行口的工作方式;SBUF用于存储串行通信时要发送的数据或已接收到的数据。

6-3、AT89C51的串行缓冲器只有一个地址,如何判断是发送信号还是接收信号?答:通过不同的传送指令进行区分,如果发送数据使用“SBUF=0xxx, ,A”如果接收数据则使用“x=SBUF”6-4、AT89C51的串行口有几种工作方式?各工作方式下的数据格式及波特率有何区别?答:AT89C51的串行口有4种工作方式。

方式0为同步移位寄存器方式,波特率为fosc /12方式1为10位异步通信方式,波特率可调方式2为11位异步通信方式,波特率为fosc /32或fosc /64方式3为11位异步通信方式,波特率可调。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第6章单片机串行通信系统习题解答一、填空题1.在串行通信中,把每秒中传送的二进制数的位数叫波特率。

2.当SCON中的M0M1=10时,表示串口工作于方式 2 ,波特率为 fosc/32或fosc/64 。

3.SCON中的REN=1表示允许接收。

4.PCON 中的SMOD=1表示波特率翻倍。

5.SCON中的TI=1表示串行口发送中断请求。

6.MCS-51单片机串行通信时,先发送低位,后发送高位。

7.MCS-51单片机方式2串行通信时,一帧信息位数为 11 位。

8.设T1工作于定时方式2,作波特率发生器,时钟频率为11.0592MHz,SMOD=0,波特率为2.4K时,T1的初值为 FAH 。

9.MCS-51单片机串行通信时,通常用指令 MOV SBUF,A 启动串行发送。

10.MCS-51单片机串行方式0通信时,数据从 P3.0 引脚发送/接收。

二、简答题1.串行口设有几个控制寄存器?它们的作用是什么?答:串行口设有2个控制寄存器,串行控制寄存器SCON和电源控制寄存器PCON。

其中PCON 中只有PCON.7的SMOD与串行口的波特率有关。

在SCON中各位的作用见下表:2.MCS-51单片机串行口有几种工作方式?各自的特点是什么?答:有4种工作方式。

各自的特点为:3.MCS-51单片机串行口各种工作方式的波特率如何设置,怎样计算定时器的初值? 答:串行口各种工作方式的波特率设置:工作方式O :波特率固定不变,它与系统的振荡频率fosc 的大小有关,其值为fosc/12。

工作方式1和方式3:波特率是可变的,波特率=(2SMOD/32)×定时器T1的溢出率 工作方式2:波特率有两种固定值。

当SM0D=1时,波特率=(2SM0D/64)×fosc=fosc/32 当SM0D=0时,波特率=(2SM0D/64)×fosc=fosc/64 计算定时器的初值计算:4.若fosc = 6MHz ,波特率为2400波特,设SMOD =1,则定时/计数器T1的计数初值为多少?并进行初始化编程。

答:根据公式 N=256-2SMOD×fosc /(2400×32×12)= 242.98≈243 =F3HTXDA: MOV TMOD,#20H;置T1定时器工作方式2MOV TL1,#0F3H ;置T1计数初值. MOV TH1,#0F3HMOV PCON,#80H ;置SMOD =1Bf B f N OSCSMOD OSC SMOD ⨯⨯-=⨯⨯⨯-=3842256123222565.用8051串行口外接CD4094扩展8位并行输出口,驱动8个LED发光二极管。

画出硬件电路图,编写程序,使LED发光二极管从左到右依次闪亮。

答:电路图如下LED发光二极管从左到右循环点亮的C51参考程序:#include<reg51.h> //包含51单片机寄存器定义的头文件#include<intrins.h> //包含函数_nop_()定义的头文件unsigned char code Tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//流水灯控制码,该数组被定义为全局变量sbit P17=P1^7;void delay(void){unsigned char m,n;for(m=0;m<200;m++)for(n=0;n<250;n++);}/**************************************************************函数功能:发送一个字节的数据**************************************************************/void Send(unsigned char dat){P17=0; //P1.7引脚输出锁存信号,对cd4094锁存nop_(); //延时一个机器周期_nop_(); //延时一个机器周期,保证锁存完成P17=1; //结束对cd4094的锁存SBUF=dat; //将数据写入发送缓冲器,启动发送while(TI==0) //若没有发送完毕,等待;TI=0; //发送完毕,TI被置“1”,需将其清0}/*******************************************函数功能:主函数******************************************/void main(void){unsigned char i;SCON=0x00; //SCON=0000 0000B,使串行口工作于方式0while(1){for(i=0;i<8;i++){Send(Tab[i]); //发送数据delay(); //延时}}}三、Proteus仿真1.在Proteus下,仿真实现6.6节内容。

答:全自动洗衣机串行方式时间显示Proteus仿真为节省单片机并口资源,全自动洗衣机时间显示可用串口实现。

一次洗衣时间一般不会超过99分钟,用2位LED数码管显示时间即可。

电路如图6-9所示。

入并出的移位寄存器,功能是接收AT89C51单片机串行通信口输出的串行数据并转换成并行数据输出,从而驱动LED数码管显示。

74LS164的1、2脚为数据输入端,接单片机串行口的RXD端(P3.0脚),74LS164的第8脚为时钟脉冲输入端(CLK),接单片机串行口的TXD端(P3.1脚),第9脚R为清零端,低电平清零,正常工作时接高电平。

两只LED数码管采用共阴极静态显示方式。

下列程序实现串行两位LED数码管时间显示,显示范围为00—99分钟。

使用串行口进行信息传送,程序编写相当简单,用户只需将需要显示的数据直接送串口发送缓冲器,等待串行中断即可。

汇编语言参考程序:ORG 0000H ;在0000H单元存放转移指令LJMP NAIN ;转移到主程序ORG 000BH ;定时器T0的中断入口地址LJMP INTERRUPT ;转移到中断子程序ORG 0200H ;主程序从0200H开始MAIN: MOV TMOD,#01H ;使用定时器T0,工作方式1MOV TH0, #3CH ;置初T0值50msMOV TL0, #0B0HHMOV R0,#0 ;用于存1秒的计数次数SETB EA ;开中断总允许SETB ET0 ;允许T0中断SETB TR0 ;启动计时LOOP: LCALL Display ;循环调用显示子程序SJMP LOOPTAB: DB 3FH,06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH ;0~9的共阴极段码DISPLAY: ;显示子程序(显示分钟)MOV DPTR, #TAB ;将表首地址赋给DPTRMOV A, 30H ;将30H中存放的分计数赋给累加器AMOV B, #0AH ;将10赋给累加器BDIV AB ;分计数除以10得十位数放在A中,个位数放在B中MOVX A, @A+DPTR ;查表得十位数的`显示段码MOV SBUF, A ;发送十位数L1: JBC TI, L2 ;判是否发送完,未发完循环等待,若发完则转L2 SJMP L1L2: MOV A, B ;将个位数赋给累加器AMOVX A, @ A+DPTR ;查表得个`位数的显示段码MOV SBUF, A ;发送个位数L3: JBC TI, L4 ;判是否发送完,未发完循环等待,若发完则转L4 SJMP L3L4: RET ;子程序返回INTERRUPT: ;中断服务子程序INC R0 ;每中断一次(50ms)加1CJNE R0, #20, L5 ;判是否中断20次,若不是则转L5中断返回,若是则顺序执行CLR R0 ;到1秒钟,清R0INC R1 ;秒计数加1CJNE R1, #60, L5 ;判秒是否计满60次,若未满则转L5中断返回,若满则顺序执行CLR R1 ;如果秒计满60,将秒计数单元内容清0INC 30H ;分钟计数单元30H内容加1CJNE 30H, #99, L5 ;判分是否计满99次,若未满则转L5中断返回,若满则顺序执行CLR R1 ;如果分计满99,将秒计数单元内容清0CLR 30H ;同时将分计数单元内容清0L5: MOV TH0, #3CH ; 定时器重新赋初值MOV TL0, #0B0HHRETI ;中断返回C语言参考程序:#include<reg51.h> // 包含51单片机寄存器定义的头文件unsigned char Tab[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数组Tab放0~9的共阴极字段码unsigned char int_time; //设中断次数计数变量unsigned char second; //秒计数变量unsigned char minute; //分钟计数变量void delay(void) //延时函数{unsigned char n,j; //设计数循环变量for(j=0;j<200;j++); //通过循环延时for(n=0;n<200;n++); //通过循环延时}void DisplayMinute(unsigned char m) //显示函数{ unsigned char ge, si; //定义变量ge、si,用于存放个位、十位si=Tab[m/10]; //计算出十位的值,查表转换成相应的段码送变量si SBUF=si; //发送显示十位while(TI==0); //等待发送完毕TI=0; //发送完后清中断标志ge=Tab[m%10]; //计算出十位的值,查表转换成相应的段码送变量geSBUF=ge; //发送显示个位while(TI==0); //等待发送完毕TI=0; //发送完后清中断标志delay(); //调延时函数,是数码管显示有一定的亮度delay();}void main(void) //主函数{TMOD=0x01; //使用定时器T0,工作方式1EA=1; //开中断总允许ET0=1; //允许T0中断TH0=(65536-46083)/256; //定时器高八位赋初值(50ms)TL0=(65536-46083)%256; //定时器低八位赋初值TR0=1; //启动计时PCON=0x00; //置SMOD=0SCON=0x00; //串行口工作在方式0while(1) //无限循环体{DisplayMinute(minute); //调用分钟显示子程序}}void interserve(void ) interrupt 1 //计数器T0中断函数{int_time++; //每中断一次(50ms)加1if(int_time==20) // 50ms记20次为1秒(仿真时可将次数改小,减少等待时间)。

相关文档
最新文档