单片机复习.docx
- 文档编号:8009135
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:26
- 大小:7.65MB
单片机复习.docx
《单片机复习.docx》由会员分享,可在线阅读,更多相关《单片机复习.docx(26页珍藏版)》请在冰豆网上搜索。
单片机复习
【例1】编制一个循环闪烁灯的程序。
设80C51单片机的P1口作为输出口,经驱动电路74LS240(8反相三态缓冲/驱动器)接8只发光二极管,如图4-8所示。
当输出位为“1”时,发光二极管点亮,输出位为“0”时为暗。
试编程实现:
每个灯闪烁点亮10次,再转移到下一个灯闪烁点亮10次,循环不止。
解:
程序如下:
FLASH:
MOVA,#01H;置灯亮初值
FSH0:
MOVR2,#0AH;置闪烁次数
FLOP:
MOVP1,A;点亮
LCALLDY1s;延时1s
MOVP1,#00H;熄灭
LCALLDY1s;延时1s
DJNZR2,FLOP;闪烁10次
RLA;左移一位
LJMPFSH0;循环
END;
【例】在单片机应用系统中,常用LED数码管显示数码,但显示数字(≤9)与显示数字编码并不相同,需要将显示数字转换为显示字段码,通常是用查表的方法。
现要求将30H中的显示数字转换为显示字段码并存入A。
已知共阴字段码表首址为TABD。
解:
编程如下:
LED:
MOVDPTR,#TABD;置共阴字段码表首址
MOVA,30H;读显示数字
MOVCA,@A+DPTR;查表,转换为显示字段码
RET;
TABD:
DB3FH,06H,5BH,4FH,66H;0~4共阴字段码表
DB6DH,7DH,07H,7FH,6FH;5~9共阴字段码表
START:
MOV30H,#09H
LEDON:
LCALLLED
MOVP1,A
LCALLDELAY_1S
DJNZ30H,LEDON
LJMPSTART
END
参照以上例题,按下列要求编写程序:
注:
可与例1一起参考。
①循环显示数字0-9;
②fosc=6MHz;
③显示间隔为1S;
例:
显示内存31H—36H中内容
START2MOVR0,#31H;待显示数据所在内存首址送R0
MOVR1,#01H;R1=00000001,数码管的选择码送R1
MOVA,R1;A=00000001,指向第一个数码管
LP0:
MOVP3,A;未循环前,P3.0=1,经“非”门后变为零,指向第一个数码管.
MOV30H,@R0;待显示数据送A
LCALLLED
MOVP1,A;段码送P1口,由被选中的数码管显示
LCALLDELAY_1MS;延时1毫秒
INCR0;R0内容加1,指向下一个存储单元
MOVA,R1;选择数码管的数据送A.
RLA;A循环左移一位,00000001变为00000010,指向下一个数码管
JBACC.6,LP2;若A的第6位为1,转向LP2,否则往下执行
MOVR1,A;下一个数码管的选择码送R1
LJMPLP0;6个数码管未显示完,继续.
LP2:
LJMPSTART2
4511真值表
【例】试编制程序显示数字987
解:
MOVP1,#F7H;输出个位显示数7
CLRP1.4;选通个位,P1.4=0
MOVP1,#F8H;输出十位显示数8
CLRP1.5;选通十位,P1.5=0
MOVP1,#F9H;输出百位显示数9
CLRP1.6;选通百位,P1.6=0
RET
一、独立式键盘接口
驱动程序:
LP:
MOVC,P1.0
JCLP
KEY:
…..
…..
SJMPLP
独立式键盘与单片机接口
独立式键盘与单片机接口(图1)
ORG0030H
KB:
MOVP1,#0FFH;置P1口为输入口
MOVA,P1;读键状态
CPLA
ANLA,#0FH;屏蔽高4位
JZKB;无键闭合则返回
LCALLD10MS;延时去抖动
MOVA,P1;再读键状态
CPLA
ANLA,#0FH
JZKB;无键闭合则返回
CJNEA,#01H,KB01
INC20H;K1键闭合,20H单元加1
LJMPKB
KB01:
CJNEA,#02H,KB02
DEC20H;K2键闭合,20单元减1
SJMPKB
KB02:
CJNEA,#04H,KB03
MOV21H,#00H;K3键闭合,21H单元清0
LJMPKB
KB03:
CJNEA,#08H,KB
MOV21H,#0FFH;K4键闭合,21H单元置FF
SJMPKB;若有两键以上闭合则返回
END
★⒊中断系统应用举例
【例】出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断(P3.2)引脚输入,行驶里程为轮胎周长×运转圈数,设轮胎周长为2m,试实时计算出租车行驶里程(单位米),数据存32H、31H、30H。
解:
编程如下:
ORG0000H;复位地址
LJMPSTAT;转初始化
ORG0003H;中断入口地址
LJMPINT;转中断服务程序
ORG0100H;初始化程序首地址
STAT:
MOVSP,#60H;置堆栈指针
SETBIT0;置边沿触发方式
MOVIP,#01H;置高优先级
MOVIE,#81H;开中
MOV30H,#0;里程计数器清0
MOV31H,#0;
MOV32H,#0;
SJMP$;等待中断
•ORG0200H;中断服务子程序首地址
•INT:
PUSHAcc;保护现场
•PUSHPSW;
•MOVA,30H;读低8位计数器
•ADDA,#2;低8位计数器加2m
•MOV30H,A;回存
•CLRA;
•ADDCA,31H;中8位计数器加进位
•MOV31H,A;回存
•CLRA;
•ADDCA,32H;高8位计数器加进位
•MOV32H,A;回存
•PUSHPSW;恢复现场
•PUSHAcc;
•RETI;中断返回
一.定时/计数器概述
80C51单片机内部有两个16位定时/计数器T0和T1,其核心是计数器,基本功能是加1。
对外部事件脉冲(下降沿)计数,是计数器;
对片内机器周期脉冲计数,是定时器。
定时/计数器作为计数器时,外部事件脉冲必须从规定的引脚输入(T0/P3.4T1/P3.5)。
且外部脉冲的最高频率不能超过时钟频率的1/24。
⒉工作方式1
16位计数器,最大计数值为216=65536。
⒊工作方式2
图方式2(初始常数自动重装载)
•
•8位计数器,仅用TL0计数,最大计数值为256,计满溢出后,一方面进位TF0,使溢出标志TF0=1;另一方面,使原来装在TH0中的初值装入TL0。
【例1】已知晶振6MHz,要求定时0.5mS,试分别求出T0工作于方求出T0工作于方式0、方式1、方式2、方式3时的定时初值。
⑵工作方式1:
T0初值=216-500s/2s=65536–250=65286=FF06H
TH0=FFH;TL0=06H。
⑶工作方式2:
T0初值=28-500s/2s=256-250=6
TH0=06H;TL0=06H。
①计算定时初值
T0初值=216-50000s/1s
=65536–50000=15536=3CB0H
TH0=3CH;TL0=B0H
②设置TMOD:
00000001B=01H
T0方式1
T0用作定时器
与无关
T1控制位
【例】有一生产流水线,流水线上通过的工件经光电转换电路产生计数脉冲,脉冲整形后送入T0端,要求每生产100个工件,向P1.0发出一包装命令正脉冲,包装成一箱,请编写控制程序。
【例】设MCS-51单片机系统的晶振频率为12M,编程测试外部脉冲输入引脚INT0(P3.2)上输人的正脉冲宽度(设正脉冲宽度小于65ms),并将测量数值以us为单位存放于R1,R2中。
当GATE=1时,T0的工作不仅由TR0控制,还受引脚INT0电平控制,只有当TR0为l,且INT0输入高电平时,定时器T0才会启动。
利用这个功能,可以测试外部脉冲输入引脚INT0上输入的正脉冲宽度。
【例】从P1.0输出方波信号,周期为2ms。
设单片机的focs=12MHz。
(C51)
•周期为2ms的方波要求定时间隔1ms,每次时间到P1.0取反。
•定时器计数率为fosc/12,Tcy=12/fosc=1µs。
•每个机器周期定时器计数加1,1ms=1000µs,需计数次数为1000/(12/fosc)=1000/1=1000。
•由于计数器向上计数,为得到l000个计数之后的定时器溢出,必须给定时器赋初值65536-1000,C语言中相当于-1000。
80C51扩展外RAM时典型连接电路
【例】试编制程序,从外部RAM6264起始地址(6000H)处读入数据,共16个数据,存入以30H为首址的内RAM。
IND:
MOVDPTR,#6000H;置外RAM地址
MOVR0,#30H;置内RAM数据存储区首址
IND0:
MOVXA,@DPTR;输入数据
MOV@R0,A;存数据
INCR0;指向下一存储单元
CJNER0,#40H,IND0;判16个数据读完否?
未完继续
RET
§8-3A/D转换接口电路
一、A/D转换的基本概念
A/D转换的功能是把模拟量电压转换为N位数字量。
常见的N为8、10、12
§8-4D/A转换接口电路
一、D/A转换的基本概念
D/A转换将N位数字量转换为相应的模拟量。
设D为N位二进制数字量,UA为电压模拟量,UREF为参考电压,其转换关系为:
UA=D×UREF/2N
(其中:
D=D0×20+D1×21+…+DN-1×2N-1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 复习
![提示](https://static.bdocx.com/images/bang_tan.gif)