单片机程序题库Word文档下载推荐.docx
- 文档编号:13243940
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:11
- 大小:46.01KB
单片机程序题库Word文档下载推荐.docx
《单片机程序题库Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机程序题库Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
ADDA,#3;
修正偏移量
MOVCA,@A+PC;
查表求Y=X2(PC=1005H)
MOV21H,A;
存结果
TAB:
DB00,01,04…;
DB09,…,225
3.分析下面程序
MOVR0,#0C8H;
(R0)=200
CLRP1.7;
P1.7为低电平
LOOP:
CPLP1.7;
P1.7变反(1µ
s)
NOP;
(1µ
s)
DJNZR0,LOOP;
(R0)≠0则转(2µ
s)
4.设计一个延时10ms的延时子程序,已知单片机使用的晶振为6MHZ。
机器周期数ORG0020H
1MOVR0,#0AH;
外循环10次
1DL2:
MOVR1,#MT;
内循环MT次
1DL1:
NOP
1NOP;
空操作指令
2DJNZR1,DL1
2DJNZR0,DL2
RET
内循环DL1到指令DJNZR1,DL1的计算:
(1+1+2)ⅹ2μsⅹMT=1000μs
MT=125=7DH总的延时时间:
{1+[1+(1+1+2)ⅹ125+2]ⅹ10}ⅹ2μs=10.062ms
5.试计算延时程序的执行时间
DELAY:
MOVR6,#64H(=100)1
I1:
MOVR7,#0FFH(=255)1
I2:
DJNZR7,I22
DJNZR6,I12
RET2
延时时间计算:
(设时钟fOSC=12MHz)T=1us
t=(1×
1+1×
100+2×
100×
255+2×
1)×
T=51.303ms
6.DELAY:
MOVR6,#1001
D1:
MOVR7,#101
D2:
NOP1
DJNZR7,D22t=6.606ms
DJNZR6,D12
RET2
计算延时程序的执行时间(设时钟fOSC=6MHz,T=2us)。
7.十六进制数转换为ASCII码:
HASC:
CJNEA,#0AH,N
N:
JNCN1(C=0跳N1)
ADDA,#30H
SJMPSE
N1:
ADDA,#37H
SE:
RET
8.设从片内RAM30H单元和40H单元有两个16字节数,把它们相加,结果放于30H单元开始的位置处(设结果不溢出)。
ORG1000H
MOVR0,#30H
MOVR1,#40H
MOVR2,#16
CLRC
LOOP:
MOVA,@R0
ADDCA,@R1
MOV@R0,A
INCR0
INCR1
DJNZR2,LOOP
9.按下面公式编写程序,x为无符号数,存在20h单元y存放在21h单元
ORG0030H
MOVA,20H
CJNEA,#21H,LOOP1
LOOP1:
JCNEXT1
CJNEA,#40H,LOOP2
LOOP2:
JNCNEXT2
MOVB,#2
MULAB
AJMPNEXT2
NEXT1:
CPLA
NEXT2:
MOV21H,A
从内部RAM22h单元开始存有一个无符号数数据块,长度n存于21h中。
求出数据块中的最小数,存于20h中。
MOVR0,#22H;
数据块起始地址
MOVR1,21H;
数据个数n
MOV20H,#0FFH;
最大数
MOVA,@R0;
取新数
INCR0;
为取下一个新数作准备
CJNEA,20H,LOOP1;
与原最大数比较
JNCNEXT;
大,原最小数保留
MOV20H,A;
小,改变最小数
NEXT:
DJNZR1,LOOP;
循环
10.ASCII码转换为十六进制数:
AHEX:
CLRC
SUBBA,#30H
CJNEA,#0AH,N
JCN1
SJMPAE
SUBBA,#11H
CJNEA,#06H,N2
N2:
JNCERR
ADDA,#0AH
ERR:
MOVA,#0FFH
AE:
8位二进制转换成BCD码。
(用十进制表达的二进制码)
BINBCD1:
MOVB,#100
DIVAB
MOV@R0,A
MOVA,#10
XCHA,B;
(A)=原(B),(B)=10
MOV@R0,A
XCHAB
11.要求每次按动按键,使外接发光二极管LED改变一次亮灭状态。
解:
INT0输入按键信号,P1.0输出改变LED状态。
1、跳变触发:
每次跳变引起一次中断请求。
ORG0000H;
复位入口AJMPMAIN
ORG0003H;
中断入口AJMPPINT0
ORG0100H;
主程序
MAIN:
MOVSP,#40H;
设栈底
SETBEA;
开总允许开关
SETBEX0;
开INT0中断
SETBIT0;
负跳变触发中断
H:
SJMPH;
执行其它任务
ORG0200H;
中断服务程序
PINT0:
CPLP1.0;
改变LED
RETI;
返回主程序
2、电平触发:
可避免一次按键引起多次中断响应。
1)软件等待按键释放(撤消低电平);
(2)硬件清除中断信号(标志位)。
复位入口
AJMPMAIN
中断入口
AJMPPINT0
CLRIT0;
低电平触发中断
H:
执行其它任务
PINT0:
WAIT:
JNBP3.2,WAIT;
等按键释放(P3.2即INT0)
假设系统时钟为6MHz,编写定时器T0产生1秒定时的程序。
(1)T0工作方式的确定
定时时间较长,采用哪一种工作方式?
由各种工作方式的特性,可计算出:
方式0最长可定时16.384ms;
方式1最长可定时131.072ms;
方式2最长可定时512s。
选方式1,每隔100ms中断一次,中断10次为1s。
(2)计算计数初值
因为:
(216-X)×
2×
10-6=10-1
所以:
X=15536=3CB0H
因此:
TH0=3CH,TL0=B0H
(3)10次计数的实现
采用循环程序法。
(4)程序设计
ORG0000H
RESET:
LJMPMAIN;
上电,转主程序入口MAIN
ORG000BH;
T0的中断入口
LJMPIT0P;
转T0中断处理程序IT0P
ORG1000H
MAIN:
MOVSP,#60H;
设堆栈指针
MOVB,#0AH;
设循环次数10次
MOVTMOD,#01H;
设T0工作在方式1
MOVTL0,#0B0H;
给T0设初值
MOVTH0,#3CH
SETBTR0;
启动T0
SETBET0;
允许T0中断
SETBEA;
CPU开放中断
HERE:
SJMPHERE;
等待中断
ITOP:
T0中断子程序,重装初值
MOVTH0,#3CH;
DJNZB,LOOP
CLRTR0;
1s定时时间到,停止T0工作
LOOP:
RETI
12.由P1.0输出方波信号,周期为2ms,设fosc=12MHz。
每隔1ms改变一次P1.0的输出状态。
用T0非门控方式1定时。
计算时间常数:
X=216-t/T=216-1000/1=FC18H
START:
MOVTMOD,#01H
MOVTL0,#18H
MOVTH0,#0FCH
SETBTR0
LOOP:
JBCTF0,PTF0
SJMPLOOP
PTF0:
CPLP1.0
ORG0000H
AJMPMAIN
ORG000BH;
T0定时器
AJMPPT0INT
ORG0100H
MOVSP,#60H
MOVTMOD,#01H
MOVTL0,#18H
MOVTH0,#0FCH
SETBEA
SETBET0
SETBTR0
HERE:
SJMPHERE
PT0INT:
RETI
13.P1.7驱动LED亮1秒灭1秒地闪烁,设时钟频率为6MHz。
本题采用硬件方式:
T0定时,定时10ms;
T1计数T0的定时跳变信号P1.0的负跳变次数,计满100个跳变为1秒。
(查询方法)T=2µ
s,X=5×
105个T,而最大只能65536个T,
不能满足要求,必须借助硬件计数器或软件循环。
T0定时初值:
(方式1)t=10ms,X=5000D=1388H,C=(1388H)补=EC78HT1计数初值:
(方式2)
MOVTMOD,#61H
MOVTL1,#0CDH
MOVTH1,#0CDH
CLRP1.0
SETBTR1
LOOP1:
CPLP1.7
LOOP2:
MOVTL0,#78H
MOVTH0,#0ECH
SETBTR0
LOOP3:
JBCTF0,LOOP4
SJMPLOOP3
LOOP4:
JBCTF1,LOOP1
SJMPLOOP2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 程序 题库