单片机课程报告.docx

上传人:b****8 文档编号:9240197 上传时间:2023-02-03 格式:DOCX 页数:23 大小:487.04KB
下载 相关 举报
单片机课程报告.docx_第1页
第1页 / 共23页
单片机课程报告.docx_第2页
第2页 / 共23页
单片机课程报告.docx_第3页
第3页 / 共23页
单片机课程报告.docx_第4页
第4页 / 共23页
单片机课程报告.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

单片机课程报告.docx

《单片机课程报告.docx》由会员分享,可在线阅读,更多相关《单片机课程报告.docx(23页珍藏版)》请在冰豆网上搜索。

单片机课程报告.docx

单片机课程报告

 

河海大学计算机与信息学院(常州)

 

单片机原理与应用课程论文

 

指导老师:

授课班号:

姓名:

学号:

第一章单片机系统结构

一、MCS-51单片机基本特性

1、8位的CPU,片内有振荡器和时钟电路,工作频率为

1~12MHz(Atmel89Cxx为0~24MHz)

2、片内有128/256字节RAM

3、片内有0K/4K/8K等字节程序存储器ROM

4、可寻址片外64K字节数据存储器RAM

5、可寻址片外64K字节程序存储器ROM

6、4个8位的并行I/O口(PIO)

7、1个全双工串行口(SIO/UART)

8、2/3个16位定时器/计数器(TIMER/COUNTER)

9、可处理5/6个中断源,两级中断优先级

10、内置1个布尔处理器和1个布尔累加器(Cy)

11、MCS-51指令集含111条指令

二、单片机的结构

三、单片机的引脚

Vcc,GND,XTAL1,XTAL2(片内振荡电路输入/输出端),RESET,EA/Vpp,ALE/PROG,PSEN,P0.0—P0.7,P1.0—P1.7,P2.0—P2.7,P3.0—P3.7。

RESET:

复位端(正脉冲有效,宽度>2个机器周期),复位使单片机进入某种确定的初始状态:

PC值归零(0000H);各个SFR被赋予初始值(见P.42):

P0~P3=0FFH,Acc=0,B=0,TH0=0,TL0=0,TH1=0,TL0=0,SP=7,PSW=0……

退出处于节电工作方式的停顿状态、退出一切程序进程、退出程序的死循环,从头开始。

EA/Vpp:

寻址外部ROM控制端/编程电源输入端。

低有效,片内无ROM时必须接地;

片内有ROM时并应用时应当接高电平

PSEN:

寻址外部程序存储器时选通外部EPROM的

读控制端(OE)低有效。

四、振荡周期/时钟周期:

Tc=晶振频率fosc(或外加频率)的倒数

状态周期:

Ts=2个时钟周期(Tc)(很少用到此概念)

机器周期:

Tm=6个状态周期(Ts)=12个振荡周期(Tc)

指令周期:

Ti:

执行一条指令所需的机器周期(Tm)数

牢牢记住:

振荡周期=晶振频率fosc的倒数;

1个机器周期=12个振荡周期

1个指令周期=1、2、4个机器周期

五、存储器、堆栈、SFR

1、89C51单片机存储器配置

片内RAM128字节(00H—7FH);

片内RAM前32个单元是工作寄存器区(00H—1FH)

片内RAM有128个可按位寻址的位,占16个单元。

位地址编号为:

00H—7FH,分布在20H—2FH单元

片内21个特殊功能寄存器(SFR)中:

地址号能被8整除的SFR中的各位也可按位寻址(P.33-34)

可寻址片外RAM64K字节(0000H—FFFFH)

可寻址片外ROM64K字节(0000H—FFFFH)

片内FlashROM4K字节(000H—FFFH)

2、存储器配置(片内RAM)

3、堆栈:

在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循先进后出和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。

功用:

1)子程序调用和中断服务时CPU自动将当前PC

值压栈保存,返回时自动将PC值弹栈。

2)保护现场/恢复现场

3)数据传输

堆栈区由特殊功能寄存器堆栈指针SP管理堆栈区可以安排在RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。

从堆栈取出数据时:

取出的数据是最近放进去的一个数据,也就是当前栈顶的数据。

然后SP再自动减1,仍指着栈顶……

89C51特殊功能寄存器(SFR)

专用于控制、选择、管理、存放单片机内部各部分的工作方式、条件、状态、结果的寄存器。

不同的SFR管理不同的硬件模块,负责不同的功能——各司其职

换言之:

要让单片机实现预订的功能,必须有相应的硬件和软件,而软件中最重要的一项工作就是对SFR写命令(要求)。

4、特殊功能寄存器(PC)

PC不是一个特殊功能寄存器SFR,但其作用又十分重要和特殊

特点:

它是16位的按机器周期自动增1计数器

总指向下一条指令所在首地址(当前PC值)

一切分支/跳转/调用/中断/复位等操作的本质就是:

改变PC值

特殊功能寄存器(PSW)

第二章:

单片机指令系统

一、ASM-51指令的格式

[标号:

]操作码[目的操作数][,源操作数][;注释]

方括符[]表示可选项

标号代表指令所在地址,1-8个字母/数字,“:

”结尾

操作码就是指令功能助记符,指令实体

目的操作数

源操作数

注释,以“;”开头

二、51单片机指令的寻址方式

寻找(或确定)操作数所在单元地址的方式。

寻址方式越多,计算机寻址能力越强,但指令系统也越复杂。

1、寄存器寻址

操作数在寄存器中,如R0-R7,A、B、Cy(位)、DPTR等

例:

MOVA,B;(A)←(B)

MOV30H,R0;(30H)←(R0)

MOVA,R1;(A)←(R1)

2、立即寻址

操作数在指令中直接给出

例:

MOVA,#64H;(A)←立即数64H

ADDA,#05H;(A)←(A)+立即数05H

注意:

符号“#”表明其后跟的是立即数,

立即数——就是数字量本身。

3、直接寻址

指令中直接给出了操作数所在单元的地址或名称

例:

MOVR1,1FH;(R1)←(1FH)

MOV30H,4AH;(30H)←(4AH)

4、寄存器间接寻址

寄存器中的内容是一个地址,该地址单元的内容是所需的操作数。

操作数是通过寄存器间接得到的

例:

[MOVR1,#30H;(R1)←立即数30H]

MOV@R1,#0FH;(30H)←立即数0FH

MOVA,@R1;(A)←((30H))=#0FH

“间接”表示某寄存器中的“内容”只是一个“单元地址”,这个地址单元中存放的数据才是要找的“操作数”。

5、变址寻址

也称为:

基址寄存器+变址寄存器间接寻址

以16位的地址指针寄存器DPTR或16位的PC寄存器为基址寄存器,以累加器A为变址寄存器,两者中的“内容和”形成一个16位的“地址”,该“地址”所指的存储单元中的内容才是操作数。

6、相对寻址

当前PC值加上指令中规定的偏移量rel,构成实际的操作数地址

例:

SJMPrel

操作:

跳转到的目的地址=当前16位PC值+rel

注意:

1)“当前PC值”指程序中下一条指令所在的首地址,

是一个16位数;

2)符号“rel”表示“偏移量”,是一个带符号的单字

节数,范围是:

-128—+127(80H—7FH),

7、位寻址

指令中直接给出了操作数所在的位地址或名称。

例:

CLRP1.0;(P1.0)←0

SETBACC.7;(ACC.7)←1

CPLC;(C)←NOT(C)

三、MCS-51指令集

1、数据传送类指令

内部存储器间传送:

(MOV——16条)

外部数据存储器与累加器间传送:

(MOVX——4条)

程序存储器向累加器传送:

(MOVC——2条)

数据交换:

(XCH,XCHD,SWAP——5条)

堆栈操作:

(PUSH,POP——2条)

(1)、内部存储器间传送指令

a.以累加器A为目的操作数的指令

MOVA,#data;A←#data

MOVA,Rn;n=0~7,A←(Rn)

MOVA,@Ri;i=0,1,A←((Ri))

MOVA,direct;A←(Rn)direct为内部RAM或SFR地址

注意以下两组指令的不同点

MOVA,#20H;(A)=20HA的内容为20H

MOVA,20H;(A)=(20H)A的内容为20H中的内容

b.以Rn为目的操作数的指令

MOVRn,A;Rn←(A),n=0~7

MOVRn,direct;Rn←(direct)

MOVRn,#data;Rn←#data

c.以直接地址为目的操作数的指令

MOVdirect,A;direct←(A)

MOVdirect,Rn;direct←(Rn),n=0~7

MOVdirect,@Ri;direct←((Ri)),i=0,1

MOVdirect,direct;direct←(direct)

MOVdirect,#data;direct←#data

d.以寄存器间接地址为目的操作数指令

MOV@Ri,A;((Ri))←(A),i=0,1

MOV@Ri,direct;((Ri))←(direct)

MOV@Ri,#data;((Ri))←#data

(2)、外部数据存储器与累加器间传送(4条)

类指令可在累加器与以@DPTR或@Ri所代表的外部RAM之间进行数据传送。

MOVXA,@DPTR——(A)¬((DPTR))

MOVXA,@Ri——(A)¬((Ri))

MOVX@DPTR,A——((DPTR))¬(A)

MOVX@Ri,A——((Ri))¬(A)

(3)、程序存储器向累加器传送指令(2条)

MOVCA,@A+DPTR

MOVCA,@A+PC

——通常称为查表指令,寻址方式属:

“基址寄存器+变址寄存器间接寻址”

(4)、数据交换指令(5条)

XCHA,direct(字节互换)

XCHA,@Ri(字节互换)XCHA,Rn(字节互换)

(A)(direct)[或((Ri)),或(Rn)]

XCHDA,@Ri

累加器Acc的低4位与((Ri))的低4位互换,各自的高4位不变

SWAPA

累加器Acc的低4位与自身的高4位互换

(5)、堆栈操作指令(2条)

PUSHdirect——压栈指令

POPdirect——弹栈指令

堆栈区由特殊功能寄存器堆栈指针SP管理

堆栈区可以安排在RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,而是放在RAM区的靠后的位置

堆栈总是指向栈顶

通常PUSH与POP两条指令成对使用

2、算术运算类指令

加法运算:

(ADD——4条)

带进位加法运算:

(ADDC——4条)

带借位减法运算:

(SUBB——4条)

加1/减1操作:

(INC,DEC——9条)

单字节乘/除法运算:

(MUL,DIV——2条)

十进制调整:

(DAA——1条)

带进位加法运算:

(ADDC——4条)

带借位减法运算:

(SUBB——4条)

3、逻辑运算及移位类指令(5种/24条)

逻辑与运算:

(ANL——6条)

逻辑或运算:

(ORL——6条)

逻辑异或运算:

(XRL——6条)

累加器清零/取反:

(CLR,CPL——2条)

累加器移位操作:

(RL,RLC,RR,RRC—4条)

4、控制转移类指令(4种/17条)

此类指令改变程序的执行顺序——改变当前PC值

无条件转移:

(LJMP,AJMP,SJMP,JMP——4条)

条件转移(判断跳转):

(JZ,JNZ,CJNE,DJNZ——8条)

子程序调用及返回:

(LCALL,ACALL,RET,RETI——4条)

无条件转移LJMP,AJMP,SJMP,JMP——4条

LJMPaddr16长跳转指令——可在64K范围内跳转

AJMPaddr11绝对跳转指令——可在指令所在的2K范围内跳转

SJMPrel相对跳转指令——可在当前PC-128与+127范围内跳转

JMP@A+DPTR散转指令(间接长跳转指令)——可在以DPTR为基址+A为偏移量之和所指向的64K程序范围内跳转

条件转移

CJNEA,#data,rel

CJNEA,direct,rel

CJNE@Ri,#data,rel

CJNERn,#data,rel

——将A(或@Ri,或Rn)与#data(或direct)相比较,其值不相等就跳转;相等则不跳转,继续往下走。

DJNZdirect,rel

DJNZRn,rel

——将direct(或Rn)里的内容减1,结果不等于0就跳转;等于0则不跳转继续往下走。

子程序调用及返回:

(LCALL,ACALL,RET,RETI——4条)

5、位操作类指令(17条)

位操作类指令以位为单位进行逻辑运算及操作,可分为4种:

位传送:

(MOV——2条)

位清零/置位:

(CLR,SETB——4条)

位逻辑与/或/非运算:

(ANL,ORL,CPL——6条)

位传送指令(2条):

MOVC,bit;(C)¬(bit)

MOVbit,C;(bit)¬(C)

注:

bit表示位地址

位清零/置位指令(4条):

CLRbit(或CLRC);(bit或C)¬“0”

SETBbit(或SETBC);(bit或C)¬“1”

位逻辑与/或/非指令(6条):

ANLC,bit(或ANLC,/bit)

ORLC,bit(或ORLC,/bit)

CPLbit(或CPLC)

注:

“/bit”表示对bit位的反参加运算,bit本身不变

空操作:

NOP“耗时”一个机器周期。

donothing!

第三章单片机中断系统

一、中断概念

1、中断:

是指CPU执行正常程序时,系统中出现特殊请求,CPU暂时中止当前的程序,转去处理更紧急的事件,处理完毕后,CPU返回原程序的过程。

2、中断涉及的几个环节

①中断源②中断申请③开放中断④保护现场⑤中断服务⑥恢复现场⑦中断返回

3、中断响应过程

①、设置中断优先级触发器

②、保护断点:

将断点地址压入堆栈保存,即当前PC值入栈。

③、保护现场:

将ISR中使用到的重要寄存器入栈

④、寻找中断向量:

中断服务程序入口®PC,转入中断服务。

⑤、中断处理:

执行中断源所要求中断服务程序。

⑥、恢复现场:

重要寄存器出栈

⑦、中断返回:

执行中断返回指令,栈顶内容®PC,程序跳转回断点处。

4、单片机的中断源及TCON

2个外部中断请求:

INT0,INT1

2个片内定时器/计数器T0和T1中断请求:

TF0,TF1,(TF2——52子系列有T2)

1个串行口中断请求:

TI/RI

5、CPU识别中断申请的依据

CPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。

TCON:

Timer控制寄存器,是管理定时器工作的SFR(其中低4位管外部中断)

IE0/IE1:

外部中断申请标志位:

=0:

没有外部中断申请;

=1:

有外部中断申请。

IT0/IT1:

外部中断请求的触发方式选择位:

=0:

在INT0/INT1端申请中断的信号低电平有效;

=1:

在INT0/INT1端申请中断的信号负跳变有效.

6、单片机的中断矢量与优先级

(1)、中断矢量:

MCS-51单片机的5个中断源分别对应有各自的中断服务程序入口地址

(2)、中断优先级控制寄存器IP(0B8H)

IP——PT2PSPT1PX1PT0PX0

(3)、中断允许寄存器IE(0A8H)

IEEA—ET2ESET1EX1ET0EX0

二、中断系统硬件结构

 

第三章并口、定时与串口

一、单片机的I/O引脚结构

1、单片机的引脚(P0口)

P0.0—P0.7:

双向I/O(内置场效应管上拉)

寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;(可浮空)不接外部程序存储器时可作为8位准双向I/O口使用。

2、单片机的引脚(P1口)

P1.0—P1.7:

准双向I/O口(内置了上拉电阻)

输出时一切照常,仅在作输入口用时要先对其写“1”。

3、单片机的引脚(P2口)

P2.0—P2.7:

双向I/O(内置了上拉电阻)

寻址外部程序存储器时输出高8位地址;不接外部程序存储器时可作为8位准双向I/O口使用。

4、单片机的引脚(P3口)

P3.0—P3.7:

双功能口(内置了上拉电阻)

它具有特定的第二功能。

在不使用它的第二功能时它就是普通的通用准双向I/O口。

二、单片机的定时/计数器

1、TIMER的作用:

定时操作:

定时采样,定时扫描,定时中断

测量外部信号:

累加统计,测量周期等

定时输出:

PWM等

监视系统正常工作与否

定时器:

对片内机器时钟(周期方波)进行计数

计数器:

对Tx引脚输入的负脉冲进行计数

与Timer工作有关的特殊功能寄存器:

TCON、TMOD、THx和TLx

2、MCS-51计数/定时器的实质

实质是计数器,脉冲每一次下降沿,计数寄存器数值将加1.

计数的脉冲如果来源于单片机内部的晶振,由于其周期极为准确,这时称为定时器。

计数的脉冲如果来源于单片机外部的引脚,由于其周期一般不确定,可表示事件发生,这时称为计数器。

定时器控制寄存器TCON(88H)

TFx:

Timer0/1计数溢出标志位。

=1计数溢出;=0计数未满

TFx标志位可用于申请中断或供CPU查询。

在进入中断服务程序时会自动清零;但在

查询方式时必须软件清零。

TRx:

Timer0/1运行控制位。

=1启动计数;=0停止计数

3、定时器方式寄存器TMOD(89H)

M1,M0:

工作方式定义位(定义4种方式):

00:

13位Timer——用它无益,不要记它!

01:

16位Timer——经常用到

10:

可自动重装的8位Timer——经常用到

11:

T0分为2个8位Timer;T1此时不工作

——因为没有带来什么好处,几乎无用

C/T:

计数器/定时器选择位

=1外部事件计数器。

对Tx引脚的负脉冲计数;

=0片内时钟定时器。

对机器周期脉冲计数定时

GATE门控位:

Timer可由软件与硬件两者控制

aGATE=0——普通用法

Timer的启/停由软件对TRx位写“1”/“0”控制

GATE=1——门控用法

Timer的启/停由软件对TRx位写“1”/“0”

和在INTx引脚上出现的信号的高/低共同控制

(INTx引脚高电平允许定时/计数)

4、定时器结构与工作方式

(1)、工作方式1:

——16位的定时/计数器

工作方式1的编程要点:

THx/TLx赋初值:

THx赋高8位,TLx赋低8位

TMOD选方式:

写“M1,M0”=01b选方式1

若不用门控位,直接用软件写TRx控制启/停

a若使用门控位,先置位TRx,然后由INTx端的高/低电平来控制其启/停

若要允许中断,还须先置位ETx、EA等中断允许控制位,并编写中断服务程序

a若不用中断,可查询“计数溢出标志TFx”的方式工作,但溢出标志TFx须软件清0

方式1:

定时初值/定时时间计算

定时器的计数单元每个机器周期自动加1直到溢出(0)

T=(12/fosc)*(2^16-a)us

(2)、工作方式2的编程

TMOD寄存器选方式:

写“M1,M0”=10b选中方式2

THx/TLx赋相同初值

在TLx计数达到0FFH再加“1”时,TL0将溢出,“TFx”置1去申请中断,同时THx中的值自动重装(Copy)进TLx其他用法与各种方式1完全相同

方式2:

定时初值/定时时间计算

定时器的计数单元每个机器周期自动加1直到溢出(0)

T=(12/fosc)*(2^8-a)us(最大计数值:

256)

Timer工作方式3——几乎无用

(3)、定时器小结:

(2个16位加法计数器)

工作方式由TMOD决定;

计数/定时由C/T位决定

工作方式0(13位)永远不用

工作方式3(T0拆为双8位)几乎无用

工作方式1(16位)经常用到

工作方式2(8位自动重装)经常用到

运行/停止由TRx位控制,(当GATE=1时:

由TRx位和Tx引脚上的信号共同控制)

从初值按机器周期或外部脉冲递加,溢出位

TFx申请中断;中断允许由ETx位和EA位控制,特别注意:

不管定时时间到了与否,只要不控制TRx位,定时器就不会停止。

注意:

定时初值

三、串行通信与并行通讯

并行通讯:

数据的各位同时传送。

传输线的根数与数据位数相等。

串行通讯:

数据逐位顺序传送。

传输线仅需1-2根。

串行通信的基本特征是数据逐位顺序进行传送

串行通信的格式及约定(如:

同步方式、通讯速率、数据块格式、信号电平……等)不同,形成了多种串行通信的协议与接口标准。

全双工串行接口(UART)

全双工:

(串行通信)收/发可同时进行

半双工:

(串行通信)收/发不可同时进行

单工:

数据单向传送

异步串行通信:

以字符为单位进行传送

同步串行通信:

以数据块为单位进行传送

波特率(bps.):

每秒钟传输的数据位数

1、异步串行通信数据格式

2、串行口的结构

两个同名的接收/发送缓冲寄存器SBUF(99H)

指令MOVSBUF,A启动一次数据发送,可向SBUF

再发送下一个数

指令MOVA,SBUF完成一次数据接收,SBUF可再

接收下一个数

接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指

令对RI/TI清0,以备下一次收/发。

3、串行口相关的SFR(SCON,PCON)

SM0,SM1:

串行口4种工作方式的选择位。

00方式0:

8位移位寄存器I/O,波特率固定为fosc/12

01方式1:

8位UART(1+8+1位),波特率可变,按公式计算

10方式2:

9位UART(1+8+1+1位),波特率固定=foscx1/32或1/64

11方式3:

9位UART(1+8+1+1位),波特率可变,按公式计算

SM2:

串行口多机通信控制位(作为方式2、方式3的附加控制位)

RI,TI:

串行口收/发数据申请中断标志位

=1申请中断;=0不申请中断

RB8:

在方式2、3中,是收到的第9位数据。

在多机通信中,用作区别地址帧/数据帧的

标志。

(奇偶校验)

TB8:

方式2、3中,是要发送的第9位数据。

多机通信中,TB8=0表示发送的是数据;

TB8=1表示发送的是地址。

(奇偶校验)

REN:

串行口接收允许控制位

=1表示允许接收;=0禁止接收。

4、串行口工作方式

(1)、工作方式0:

8位移位寄存器I/O方式

发送:

SBUF中的串行数据由RxD逐位移出;

TxD输出移位时钟,波特率=fosc/12;

a每送出8位数据TI就自动置1;

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

当前位置:首页 > 外语学习 > 其它语言学习

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

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