单片机考点.docx

上传人:b****4 文档编号:1213328 上传时间:2022-10-19 格式:DOCX 页数:13 大小:130.66KB
下载 相关 举报
单片机考点.docx_第1页
第1页 / 共13页
单片机考点.docx_第2页
第2页 / 共13页
单片机考点.docx_第3页
第3页 / 共13页
单片机考点.docx_第4页
第4页 / 共13页
单片机考点.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

单片机考点.docx

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

单片机考点.docx

单片机考点

1、例题

例4-1使用定时器/计数器T0的方式0,设定1ms的定时。

在P1.0引脚上产生周期为2ms的方波输出。

晶体振荡器的频率为fosc=6MHz。

(p100)

解:

①定时常数计算

振荡器的频率fosc=6MHz=6×106Hz

方式0计数器长度L=13,2L=213=8192

定时时间t=1ms=1×10-3s

定时常数TC=2L-fosc×t/12=8192-6×106×10-3/12=8192-500=7692

定时常数TC转换成二进制数TCB=1111000001100B

所以TCH=0F0H,TCL=0CH

②TMOD的设定(即控制字)#00H

③编程

MOVTMOD,#00H;写控制字

MOVTH0,#0F0H;写定时常数

MOVTL0,#0CH

SETBTR0;启动T0

SETBET0;允许T0中断

SETBEA;开放CPU中断

AJMP$

ORG000BH;T0中断矢量地址

AJMPINQP

ORG00××H;中断服务程序

INQP:

MOVTH0,#0F0H;重写定时常数

MOVTL0,#0CH

CPLP1.0;P1.0变反输出

RETI;中断返回

例4-2使用定时器/计数器T1的方式1,设定1ms的定时。

同样,在P1.0引脚上产生周期为2ms的方波输出。

晶体振荡器的频率为fosc=6MHz。

(p101)

解:

①定时常数计算

振荡器的频率fosc=6MHz=6×106Hz,

方式1计数器长度L=16,2L=216=65536

定时时间t=1ms=1×10-3s

定时常数TC=2L-fosc×t/12=65536-6×106×10-312=65536-500=65036

定时常数TC转换成二进制TCB=1111111000001100B=0FE0CH

所以TCH=0FEH(高8位),TCL=0CH(低8位)

②TMOD的设定(即控制字)#10H

③编程

ORG001BH;T1中断矢量地址

AJMPINQP

ORG100H;主程序入口

MOVTMOD,#10H;写控制字

MOVTH1,#0FEH;写定时常数

MOVTL1,#0CH

SETBTR1;启动T1

SETBET1;允许T1中断

SETBEA;开放CPU中断

AJMP$

ORG00××H;中断服务程序

INQP:

MOVTH1,#0FEH;重写定时常数

MOVTL1,#0CH

CPLP1.0;P1.0变反输出

RETI;中断返回

例5.1.双字节加法程序段。

设被加数存放于片内RAM的addr1(低位字节)、addr2(高位字节),加数存放于adddr3(低位字节)和addr4(高位字节),运算结果和数存于addr1和addr2中。

其程序段如下:

START:

PUSHACC;将A中内容进栈保护

MOVR0,#addr1;将addr1地址值送R0

MOVR1,#addr3;将addr3地址值送R1

MOVA,@R0;被加数低字节内容送A

ADDA,@R1;低字节数相加

MOV@R0,A;低字节数和存addr1中

INCR0;指向被加数高位字节

INCR1;指向加数高位字节

MOVA,@R0;被加数高位字节送A

ADDCA,@R1;高字节数相加

MOV@R0,A;高字节数和存addr2中

POPACC;恢复A原内容

这里将A原内容进栈保护,如果原R0、R1内容有用,亦需进栈保护。

如果相加结果高字节的最高位产生进位且有意义时,应对标志CY位检测并处理之。

例5.3求双字节补码程序。

设对addr1,addr1+1的双字节读数取补后存入如addr2和addr2+1单元中,其中高位字节在高地址单元中。

8位微机对双字节数取补需分二次进行。

首先对低字节数取补,然后判其结果是否为全“0”。

若为“0”,则高字节数取补;否则,高字节数取反。

双字节数取补程序段如下:

START:

MOVR0,#addr1;原码低字节地址码送R0

MOVR1,#addr2;补码低字节地址码送R1

MOVA,@R0;原码低字节内容送A

CPLA;A内容取反+1,即取补

INCA

MOV@R1,A;低字节补码存addr2单元

INCR0;指向原码高字节

INCR1;指向补码高字节

JZLOOP1;判(A)=0?

当(A)=0转LOOP1

MOVA,@R0;原码高字节送A

CPLA;高字节内容取反

MOV@R1,A;高字节反码存addr2+1单元

SJMPLOOP2;转LOOP2,结束

LOOP1:

MOVA,@R0;低字节补码为0

CPLA;对高字节数取补

INCA

MOV@R1,A;高字节补码存addr2+1单元

LOOP2:

END;结束

例5.4存放于addr1和addr2中的两个无符号二进制数,求其中的大数并存于addr3中,其程序流程如图5--7所示,程序段如下:

TART:

MOVA,addr1;将addr1中内容送A

CJNEA,addr2,LOOP1;两数比较,不相等则转LOOP1

LOOP3:

RET;结束

LOOP1:

JCLOOP2;当CY=1,转LOOP2

MOVaddr3,A;CY=0,(A)>(addr2)

SJMPLOOP3;转结束

LOOP2:

MOVaddr3,addr2;CY=1,(addr2)>(A)

SJMPLOOP3

从上可见,CJNE是一组功能极强的比较指令,它可指出两数的大、小和相等。

通过寄存器和直接寻址方式,可派生出很多条比较指令。

同样,它亦属于相对转移。

 

 

图6-11扩张4KX8位片程序存储器的电路(P189)

在电路中,EA是上拉到+5V的,这是一种既用80C51/87C51/89C51片内4KB程序存储器,又用片外扩展的4KB程序存储器的电路。

当运行中PC小于0FFFH时,访问片内程序存储器;PC大于0FFFH时,访问片外程序存储器2732。

本片2732的地址范围为1000H~1FFFH。

电路中只扩展一片2732,它的片选接CE地,PSEN作为其输出允许信号,ALE作为锁存器74HC373的锁存允许信号。

在这里,P2口的其它线虽然未作高位地址线用,但是它们再也不能简单地作I/O线用了。

图6--18扩展片外程序存储器和片外数据存储器的电路(p95)

在电路中,程序存储器和数据存储器都由P2口提供高8位地址,P0口提供低8位地址和8位数据“或”指令,且公用一个地址锁存器。

因而两者共处同一地址空间,即程序存储地址范围为0000H~1FFFH,数据存储器的地址错范围也为0000H~1FFFH。

但程序存储器由读选通信号PSEN控制,数据存储器的读/写由RD和WR信号控制。

由于控制信号的不同,程序存储器和数据存储器的空间在逻辑上是严格分开的,所以在访问时不会发生总线冲突。

 

图4--7方式1时,定时器/计数器T0、T1的结构简图

 

图2--12为片内数据存储器各部分地址空间分布图。

 

寄存器

复位时内容

寄存器

复位时内容

PC

0000H

IE

0**0000B

ACC

00H

TL0

00H

B

00H

TH0

00H

PSW

00H

TL1

00H

SP

07H

TH1

00H

DPTR

0000H

SCON

00H

P0—P3

FFH

SBUF

不定

TMOD

00H

PCON

0xxx0000B

TCON

00H

IP

(xxx00000B)

表2-6特殊功能寄存器的复位状态

 

串行口控制寄存器SCON

串行口控制寄存器SCON是一个逐位定义的8位寄存器,由它控制串行通信的方式选择、接收和发送,指示串行口的状态。

寄存器SCON既可字节寻址也可位寻址。

表4-7串行口工作方式选择位SM0、SM1

SM0

(SCON.7)

SM1

(SCON.6)

工作

方式

特点

波特率

0

0

方式0

8位移位寄存器

fosc/12

0

1

方式1

10位UART

可变

1

0

方式2

11位UART

fosc/64或fosc/32

1

1

方式3

12位UART

可变

一、P3口的第二功能(P17)

P3——8位,准双向I/O口,具有内部上拉电阻。

P3还提供各种替代功能。

在提供这些功能时,其输出锁存器应由程序置1。

P3口可以驱动4个LSTTL负载。

串行口:

P3.0——RXD(串行输入口),输入。

P3.1——TXD(串行输出口),输出。

中断:

P3.2——INT0,外部中断0,输入。

P3.3——INT1,外部中断1,输入。

定时器/计数器:

P3.4——T0,定时器/计数器0的外部输入,输入。

P3.5——T1,定时器/计数器1的外部输入,输入。

数据存储器选通:

P3.6——WR,低电平有效,输出,片外数据存储器写选通。

P3.7——RD,低电平有效,输出,片外数据存储器读选通。

二、控制线:

共4根。

(P17)

①输入:

RST——复位输入信号,高电平有效。

EA/VPP——片外程序存储器访问允许信号,低电平有效。

②输入、输出:

ALE/PROG——地址锁存允许信号,输出。

③输出控制线:

PSEN——片外程序存储器选通信号,低电平有效。

三、数据指针DPTR(P20)

DPTR是一个16位的特殊功能寄存器,主要功能是作为片外数据存储器寻址用的地址寄存器(间接寻址),故称为数据指针。

访问片外数据存储器的指令为:

MOVXA,@DPTR读

MOVX@DPTR,A写

此时,DPTR的输出,即片外数据存储器的地址。

DPTR寄存器也可以作为访问程序存储器时的基址寄存器。

MOVCA,@A+DPTR

JMP@A+DPTR

DPTR寄存器既可以作为一个16位寄存器处理如,

MOVDPTR,#16位地址

INCDPTR

也可以作为两个8位寄存器处理,其高8位用DPH表示,低8位用DPL表示。

如:

CJNEA,DPL,$

CJNEA,DPH,$

在80C51中,两个地址寄存器,即程序计数器PC与数据指针DPTR,有相同之处,也有差别:

①两者都是与地址有关的16位的寄存器。

其中,PC与程序存储器的地址有关,而DPTR与数据存储器的地址有关。

作为地址寄存器使用时,PC与DPTR都是通过P0和P2口输出的。

但是,PC的输出与ALE及PSEN有关;DPTR的输出,则与ALE、WR、RD相联系。

②PC只能作为16位寄存器对待;由于有自动加1的功能,故又称为计数器;PC是不可以访问的;有自己独特的变化方式;它的变化轨迹决定了程序执行的流程。

DPTR可以作为16位寄存器对待,也可以作为两个8位寄存器对待;DPTR是可以访问的。

四、程序状态字PSW

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

当前位置:首页 > 工程科技 > 信息与通信

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

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