80C51单片机基础知识总结附电子时钟程序.docx
《80C51单片机基础知识总结附电子时钟程序.docx》由会员分享,可在线阅读,更多相关《80C51单片机基础知识总结附电子时钟程序.docx(29页珍藏版)》请在冰豆网上搜索。
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口在作为通用输出