80C51单片机基础知识总结附电子时钟程序.docx

上传人:b****3 文档编号:3674540 上传时间:2022-11-24 格式:DOCX 页数:29 大小:34.13KB
下载 相关 举报
80C51单片机基础知识总结附电子时钟程序.docx_第1页
第1页 / 共29页
80C51单片机基础知识总结附电子时钟程序.docx_第2页
第2页 / 共29页
80C51单片机基础知识总结附电子时钟程序.docx_第3页
第3页 / 共29页
80C51单片机基础知识总结附电子时钟程序.docx_第4页
第4页 / 共29页
80C51单片机基础知识总结附电子时钟程序.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

80C51单片机基础知识总结附电子时钟程序.docx

《80C51单片机基础知识总结附电子时钟程序.docx》由会员分享,可在线阅读,更多相关《80C51单片机基础知识总结附电子时钟程序.docx(29页珍藏版)》请在冰豆网上搜索。

80C51单片机基础知识总结附电子时钟程序.docx

80C51单片机基础知识总结附电子时钟程序

OUTBITequ08002h;位控制口

OUTSEGequ08004h;段控制口

INequ08001h;键盘读入口

LEDBufequ60h;显示缓冲

Hourequ40h

Minuteequ41h

Secondequ42h

C100usequ43h

Tickequ10000

T100usequ256-50

ljmpStart

org0003h

ljmpint0

org000bh

T0Int:

pushPSW

pushACC

mova,C100us+1

jnzGoon

decC100us

Goon:

decC100us+1

mova,C100us

orla,C100us+1

jnzExit

movC100us,#high(Tick)

movC100us+1,#low(Tick)

incSecond

cplp1.0

cplp1.1

cplp1.2

cplp1.3

mova,Second

cjnea,#60,Exit

movSecond,#0

incMinute

mova,Minute

cjnea,#60,Exit

movMinute,#0

incHour

mova,Hour

cjnea,#24,Exit

movHour,#0

Exit:

popACC

popPSW

reti

Delay2:

;延时子程序

movr7,#0

lpl:

djnzr7,lpl

ret

delay1:

movr7,#0

DelayLoop:

djnzr7,DelayLoop

deca

jnzdelayloop

ret

LEDMAP:

;八段管显示码

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

DisplayLED:

movr0,#LEDBuf

movr1,#6;共6个八段管

movr2,#00100000b;从左边开始显示

Loop:

movdptr,#OUTBIT

mova,#0

movx@dptr,a;关所有八段管

mova,@r0

movdptr,#OUTSEG

movx@dptr,a

movdptr,#OUTBIT

mova,r2

movx@dptr,a

calldelay2

mova,r2;显示下一位

rra

movr2,a

incr0

djnzr1,Loop

ret

;===============================================

ToLED:

movdptr,#LEDMap

movca,@a+dptr

ret

Start:

movr6,#0

movTMOD,#02h;模式2,定时器

movTH0,#T100us

movTL0,#T100us

movtcon,#01h

movIE,#10000011b;EA=1,IT0=1

movHour,#0

movMinute,#0

movSecond,#0

movC100us,#high(Tick)

movC100us+1,#low(Tick)

setbTR0;启动定时器0

MLoop:

mova,Hour

movb,#10

divab

callToLED

movLEDBuf,a

mova,b

callToLED

movLEDBuf+1,a

mova,Minute

movb,#10

divab

callToLED

movLEDBuf+2,a

mova,b

callToLED

movLEDBuf+3,a

mova,Second

movb,#10

divab

callToLED

movLEDBuf+4,a

mova,b

callToLED

movLEDBuf+5,a

callDisplayLED

jbp3.3,reml

incr6

jnbp3.3,$

cjner6,#7,reml

movr6,#0

reml:

ljmpmloop

int0:

cjner6,#1,hl

lcallL2

mova,#0

calldelay1

mova,hour

movb,#10

divab

movr3,b

mova,r4

movb,#10

mulab

adda,r3

movhour,a

jmpreturn1

;====================

HL:

cjner6,#2,MH

lcallL2

mova,#0

CALLDelay1

mova,Hour

MOVb,#10

divab

movb,#10

mulab

adda,R4

movHour,a

jmpreturn1

;====================

MH:

cjner6,#3,ML

lcallL2

mova,#0

CALLDelay1

mova,Minute

MOVb,#10

divab

movr3,b

mova,r4

movb,#10

mulab

adda,r3

movMinute,a

jmpreturn1

;=============

ML:

cjner6,#4,SH

lcallL2

mova,#0

CALLDelay1

mova,Minute

MOVb,#10

divab

movb,#10

mulab

adda,R4

movMinute,a

jmpreturn1

;===================

SH:

cjner6,#5,SL

lcallL2

mova,#0

CALLDelay1

mova,Second

MOVb,#10

divab

movr3,b

mova,r4

movb,#10

mulab

adda,r3

movSecond,a

jmpreturn1

;=============

SL:

cjner6,#6,return1

lcallL2

mova,#10

CALLDelay1

mova,Second

MOVb,#10

divab

mulab

adda,R4

movSecond,a

return1:

retI

;

L2:

pushpsw

pushacc

L1:

movdptr,#outbit

Movr5,#11011111b

Mova,r5

Movx@dptr,a

Movdptr,#in

Movxa,@dptr

Jnbacc.3,seven

Jnbacc.2,four

Jnbacc.1,one

Jnbacc.0,zero

;==========

Movdptr,#outbit

Mova,r5

Rra

Movr5,a

Mova,r5

Movx@dptr,a

Movdptr,#in

Movxa,@dptr

Jnbacc.1,two

Jnbacc.2,five

Jnbacc.3,eight

;===========

Movdptr,#outbit

Mova,r5

Rra

Movr5,a

Mova,r5

Movx@dptr,a

Movdptr,#in

Movxa,@dptr

Jnbacc.1,three

Jnbacc.2,six

Jnbacc.3,nine

;=======

LjmpL1

Zero:

movr4,#0

Jmpreturn2

one:

movr4,#1

jmpreturn2

two:

movr4,#2

jmpreturn2

three:

movr4,#3

jmpreturn2

four:

movr4,#4

jmpreturn2

five:

movr4,#5

jmpreturn2

six:

movr4,#6

jmpreturn2

seven:

movr4,#7

jmpreturn2

eight:

movr4,#8

jmpreturn2

nine:

movr4,#9

jmpreturn2

return2:

popacc

poppsw

ret

end

80C51单片机基础

1.1.1单片机的产生背景:

1946年世界上第一台电子计算机ENIAC诞生,ENIAC由美国政府和宾夕法尼亚大学合作开发,使用了18000个电子管,占地1800平方英尺,耗电180千瓦,其运算速度为每秒5000次。

它通过不同部分之间的重新接线编程,还拥有并行计算能力。

它使用于1946到1955年,被公认为第一台成功的高速电子数字计算机。

1.1.2单片机的发展历程——4个阶段

第一阶段(1974~1976年):

单片机探索阶段

这一阶段的单片机采用双片形式,而且功能简单。

如仙童公司生产的F8单片机,它只有8位CPU、64个字节的RAM和2个并行口,需加装一块3851芯片(含1KBROM、定时器/计数器和2个并行I/O口)才能完成控制功能。

第二阶段(1976~1978年):

低性能单片机阶段

代表机型:

Intel公司在1976年推出的8位机MCS-48系列,它以其体积小、控制功能全、价格低廉等特点,一经推出就获得了广泛的应用和好评,为单片机的发展奠定了坚实的基础,成为单片机发展史上的一个重要阶段。

第三阶段(1978~1982年):

高性能单片机阶段

普遍带有串行I/O接口、多级中断系统、16位定时器/计数器等,片内RAM、ROM的容量加大,寻址范围增加到64KB。

代表机型:

Intel公司推出的MCS-51系列单片机。

这仍是当前单片机的主流系列。

第四阶段(1982年~现在):

8位单片机巩固发展及16位、32位单片机推出阶段

继8位单片机之后,Intel公司又在1983年推出了16位单片机MCS-96系列,与MCS-51相比,MCS-96不但字长增加一倍,而且在其它性能方面也有很大提高,如在片内增加了一个4路或8路的10位A/D转换器,具有A/D转换功能等。

1.1.3单片机的发展趋势

●高集成度

●外部电路内装化

●低功耗

●引脚多功能化

●高性能

●芯片专用化

1.1.4单片机的应用

1.单片机的应用特点

●常用来替代微机实现控制系统的在线应用

●用单片机代替模拟电路或数字电路,软硬件结合控制

●可以提高控制系统的技术性能、技术含量和防盗能力

●与PC机相比,能适应较为恶劣的工作环境

例如,民用单片机的环境适应温度范围是0~+70℃。

有些单片机芯片可以在2.2V甚至是0.9V到1.2V的低电压下正常工作(通常单片机的工作电压是+5V)。

●软件固化在程序存储器中,可以避免病毒侵袭和人为修改,性能稳定

1.280C51单片机的内部结构

1.2.180C51单片机和80C51系列单片机

80C51单片机属于美国Intel公司的MCS-51系列产品中的一个型号,它采用CHMOS工艺,功耗低,性能优良,在市场中获得了广泛的应用。

80C51系列单片机,泛指所有具有MCS-51指令系统,同时采用CHMOS工艺的单片机。

在我国,80C51系列单片机因其性能价格比高、开发方式多、芯片功能适用、且为国内技术人员所熟知等特点得到了极其广泛的应用。

1.2.280C51单片机的基本组成

1.CPU系统

●1个8位微处理器CPU

●内部时钟电路

●总线控制逻辑

2.内部存储器

●4KB的片内程序存储器(ROM/EPROM/Flash)

●128B数据存储器(RAM)和128B特殊功能寄存器SFR(80C51只用到其中21B)

3.I/O接口及中断定时功能

●4个8位可编程的I/O(输入/输出)并行接口

●5个中断源的中断控制系统,可编程为2个优先级

●2个16位定时/计数器,既可以定时,又可以对外部事件进行计数

●1个全双工的串行I/O接口,用于数据的串行通信

1.2.380C51的内部结构

1.中央处理器CPU

CPU是80C51内部的1个字长为8位的中央处理单元,它由运算器、控制器两部分组成。

实际上构成了单片机的核心。

(1)运算器

●以算术逻辑单元ALU(ArithmeticLogicUnit)为核心,还包括累加器A、程序状态字寄存器PSW(ProgramStatusWord)、B寄存器、两个8位暂存器TMP1和TMP2等部件。

●可以进行加、减、乘、除、加1、减1、BCD数十进制调整、比较等算术运算;

●也可以进行与、或、非、异或等逻辑运算;

●还能完成循环移位、判断和程序转移等控制功能。

(2)控制器

●包括程序计数器PC、指令寄存器、指令译码器、振荡器、定时电路及控制电路等部件;

●它能根据不同的指令产生相应的操作时序和控制信号,控制单片机各部分的运行;

●单片机执行哪条指令受PC控制。

2.存储器

(1)片内ROM是程序存储器;

(2)片内RAM,可用于存放输入、输出数据和中间计算结果,或作为数据堆栈区。

3.I/O口

(1)并行口

有4个8位并行I/O口P0~P3,均可并行输入输出8位数据。

(2)串行口

有1个串行I/O口,用于数据的串行输入输出。

1.2.4定时器/计数器

(1)产生定时脉冲,实现单片机的定时控制;

(2)用于计数方式,记录外部事件的脉冲个数。

1.2.580C51的引脚功能描述

1.总线型DIP40引脚封装

(1)电源引脚(2个)

VCC:

接+5V电源

VSS:

接地端

(2)外接晶体引脚(2个)

XTAL1:

外接晶振输入端

XTAL2:

外接晶振输入端

(3)并行输入输出引脚(32个,分成4个8位口)

P0.0~P0.7:

通用I/O引脚或数据/低8位地址总线复用引脚

P1.0~P1.7:

通用I/O引脚

P2.0~P2.7:

通用I/O引脚或高8位地址总线复用引脚

P3.0~P3.7:

通用I/O引脚或第二功能引脚

(4)控制引脚(4个)

RST/VPD:

复位信号输入引脚/备用电源输入引脚

ALE/͞EA:

地址锁存允许信号输出引脚/编程脉冲输入引脚

͞PROG/VPP:

内外存储器选择引脚/片内EPROM(或FlashROM)编程电压输入引脚

͞͞͞͞͞PSEN:

片外程序存储器读选通信号输出引脚

2.非总线型DIP20引脚封装

(1)电源引脚(2个)

●VCC:

接+5V电源

●GND:

接地端

(2)外接晶体引脚(2个)

●XTAL1:

外接晶振输入端

●XTAL2:

外接晶振输入端

(3)并行输入输出引脚(15个)

●P1.0~P1.7:

通用I/O引脚

(P1.0和P1.1兼作模拟信号输入引脚AIN0、AIN1)

●P3.0~P3.5、P3.7:

通用I/O引脚或第二功能引脚

(4)控制引脚(1个)

RST:

复位信号输入引脚

1.380C51单片机的存储器结构

80C51系列单片机有两个存储器:

程序存储器(ROM)和数据存储器(RAM),且各自独立编址。

从用户使用角度,80C51单片机的存储器可以分为三个存储空间:

●片内、片外统一连续编址的0000H~0FFFFH共64KB的程序存储器空间。

●地址从0000H~0FFFFH的片外数据存储器空间。

●地址从00H~0FFH的256B的片内数据存储器空间,其中只有前128B能供用户作存储器使用。

1.3.1程序存储器ROM

◆程序存储器包括片内和片外程序存储器两个部分

◆程序存储器主要用来存放编好的用户程序和表格常数

◆它以16位的程序计数器PC作为地址指针,能寻址64KB。

◆部分关键的程序存储单元

●存储单元0000H~0002H:

80C51上电复位后引导程序的存放单元。

80C51上电复位后CPU总是从0000H单元开始执行。

如果在这3个单元中存放一条转移指令(如LJMP1000H),单片机就会转移到1000H单元,开始执行应用程序。

●0003H~002AH单元:

被均匀地分为5段,用作5个中断服务程序的入口;只有增强型单片机才占用002BH单元。

1.3.2数据存储器RAM

数据存储器主要用于存放运算的中间结果、数据等,它可以分为片内数据存储器和片外数据存储器两大部分。

1.片外数据存储器

片外数据存储器可以扩展到64KB,对应地址范围为0000H~0FFFFH

2.片内数据存储器

片内数据存储器共有256B,在功能上分为两部分:

●低128B(地址为00H~7FH)是真正的数据存储区;

●高128B(地址为80H~0FFH)用于特殊功能寄存器。

80C51低128B的数据存储空间的功能分区

(1)工作寄存器区(00H~1FH)

Ø此空间被均匀地分为4段(即4个工作寄存器组),每段8个单元,组成8个工作寄存器,分别被记做R0~R7。

Ø在使用这些工作寄存器前,可以通过对程序状态字PSW的RS1、RS0位置1或清0,确定选用哪组工作寄存器,否则默认使用0区。

Ø程序运行时,只能有一个工作寄存器组作为当前工作寄存器组。

(2)位寻址区(20H~2FH)

该空间有16个单元中共128个二进制位,都可以直接进行位操作。

我们根据指令的类型来区分!

例:

☐对字节地址20H单元清0,要用字节操作指令“MOV20H,#00H”;

☐对位地址20H位清0,则使用位操作指令“CLR20H”。

(3)用户区(30H~7FH)

该区域主要用作堆栈、数据缓冲、数据暂存。

用户一般应将堆栈设置在这个区间。

1.3.3特殊功能寄存器(SFR)

◆SFR是80C51内部具有特殊用途的寄存器

◆80C51内部共有21个特殊功能寄存器,每个SFR占用1个RAM单元,它们分布在80H~0FFH的地址范围内。

◆程序计数器PC不属于SFR,它是独立的。

◆在21个SFR中,有11个SFR既可以进行位寻址,也可以进行字节寻址。

它们的特征是字节地址可以被8整除(以0H或8H结尾,在表中以灰背景表示),如P1、IP。

常用特殊功能寄存器SFR的功能和用法。

1.运算类寄存器(3个)

(1)累加器A(ACC-Accumulator)

8位,向ALU提供操作数,存放运算的结果

(2)寄存器B

8位,主要用于乘、除法运算。

或作为RAM的一个单元使用。

(3)程序状态字寄存器PSW(ProgramStatusWord)

8位,存储指令执行的状态信息。

用户可以通过指令来设置PSW中某些指定位的状态,也可以通过查询有关位的状态来进行判断、转移。

PSW格式和各位含义为:

ØCY:

进位/借位标志。

有进位/借位时CY=1,否则CY=0;

ØAC:

辅助进位/借位标志。

低4位向高4位有进/借位时AC=1,否则AC=0;

ØF0:

用户标志位,由用户自己定义;

ØRS1、RS0:

当前工作寄存器组选择位;

ØOV:

溢出标志位。

有溢出时OV=1,否则OV=0;

ØP:

奇偶标志位。

ACC中结果有奇数个1时P=1,否则P=0。

2.指针类寄存器(3个)

(1)堆栈指针SP

8位,用来指示堆栈的位置,它总是指向栈顶。

(2)数据指针DPTR

16位,它是80C51内部唯一一个供用户使用的16位寄存器。

DPTR使用灵活,即可用作16位寄存器,对外部数据存储空间的64K范围进行访问,也可拆成两个8位的寄存器DPH和DPL使用。

3.接口类寄存器(7个)

(1)并行I/O口P0、P1、P2、P3均为8位,通过对这4个寄存器的读写,可实现数据从相应口的输入输出。

(2)串行口数据缓冲器SBUF

(3)串行口控制寄存器SCON

(4)电源控制寄存器PCON

4.中断类寄存器(2个)

(1)中断允许寄存器IE

(2)中断优先级寄存器IP

5.定时/计数类寄存器(6个)

(1)定时/计数器T0

由两个8位计数初值寄存器TH0、TL0组成,在构成16位计数器时,TH0存放高8位,TL0存放低8位;

(2)定时/计数器T1

由两个8位计数初值寄存器TH1、TL1组成,在构成16位计数器时,TH1存放高8位,TL1存放低8位

(3)定时/计数器的工作方式寄存器TMOD;

(4)定时/计数器的控制寄存器TCON

1.480C51单片机的并行I/O接口

80C51内部有4个8位并行I/O接口,分别称为P0、P1、P2和P3口

1.4.1并行I/O接口的特点

1.都具有“数据锁存器+输入缓冲器+输出驱动电路”的典型结构

2.I/O接口的复用功能

(1)P0、P2口的总线复用

80C51单片机在作并行总线扩展时,P0口可作为数据/地址总线使用,分时作地址、数据的传送:

◆先传送低8位地址,然后传送8位数据信号;

◆P2口用来传送高8位地址信号。

(2)P3口的功能复用

3.准双向口结构

P0~P3口在作通用输入/输出口使用时,我们称其为准双向口结构,其输入操作和输出操作具有本质的不同:

(1)输入操作:

当P0~P3口作输入口使用时,必须要对口锁存器进行写“1”操作。

由于在输入操作前有这种准备工作,所以P0~P3口叫做准双向口。

(2)输出操作:

实际上是对口锁存器作写入操作。

由图1-14结构可知,当由内部总线给口锁存器置“0”或“1”时,锁存器中“0”或“1”的状态立即通过输出驱动电路反映到引脚上。

1.4.2并行I/O口的应用特性

1.P0~P3口作通用输入/输出口使用时的硬件连接

P0~P3口都能用于输入或输出操作。

而且对每个接口都可将一部分管脚定义为输入,另一部分管脚定义为输出。

由于P0~P3口的内部结构不同,所以在作通用输入/输出口使用时,其外部的硬件电路也不相同:

(1)P0口

●P0口既可用作通用I/O口,也可作为地址/数据总线使用。

●当单片机系统需要扩展片外存储器或者需要扩展具有地址/数据线的芯片时,P0口只能用作地址/数据线,而不能再作通用I/O口使用。

●P0口作为地址/数据总线使用时,无需外接上拉电阻。

●P0口用作通用I/O接口使用时,必须外接上拉电阻。

(2)P1口

●P1口只能作为通用I/O口使用,没有第二功能。

●P1口在作为通用输出

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1