高级电工单片机实操教案

发布 2021-04-23 19:20:28 阅读 4190

试题编号3301

控制要求:在内部ram中20h开始的区域中存有二十个无符号数,找出其中最大和最小数,分别送34h和35h单元。(注:目标程序于0800h单元开始)

org 0000h

ljmp main

org 0800h

main : mov r0, #20h ;从内部20h单元开始查找。

mov r7, #19 ;20个数需要比较19次。

mov 34h , r0 ;将20h单元的内容同时送34h和35h

mov 35h, @r0

loop : inc r0指向下一个单元。

mov a , r0 ; 读取到acc

cjne a , 34h , b1 ;将读取的内容与34h的内容进行比较,不相等跳b1处。

sjmp exit ;相等则不作其它比较跳exit处。

b1 : jc xiao若a的内容小于34h的内容则c为1,跳xiao处。

mov 34h , a ;c为0表明a大于34h的内容则替换掉34h的内容。

sjmp exit ;替换后退出不作最小数比较。

xiao : cjne a , 35h , b2 ;作最小数比较,不相等跳b2处。

sjmp exit ;相等退出到exit处。

b2 : jnc exit ;若a的内容大于35h的内容跳exit处。

mov 35h , a ;若a的内容小于35h的内容则替换掉35h的内容。

exit : djnz r7 , loop ;判断比较次数是否完毕。

sjmp比较完毕原地等待。end

控制要求:利用8031定时器与中断功能控制一个“航标灯”,黑夜时发光二极管按指定频率闪烁(如:亮2s,灭2s,循环);白天时发光二极管不亮。

电路图:电路工作原理:

白天光敏电阻阻值小,使p3.2输入电位为高电平,不产生中断,使led灭。晚上光敏电阻阻值变大,使p3.

2的输入电位为低电平,这时产生中断,中断使led闪烁。只要是在晚上要求led一直闪烁。所以中断应该采用电平触发方式。

调试方法:接好电路,编好程序,使光敏电阻暴露在光线下,调节rp到最小值,这时led应该闪烁。慢慢调大rp的阻值,使led刚刚灭,保持rp这时的阻值即可。

当用手遮住光敏电阻的光线,led就会闪烁。

编程思路:使用定时器t0,方式1。所以tmod=0 0 0 0 0 0 0 1

即:01h 使用指令: mov tmod , #01h

每50ms中断一次。

当晶振为12mhz时,1us加一。50ms=50000us。所以赋初值为。

65536-50000=15536 ,将15536转换为十六进制为3cb0h 高八位送th0, 第八位送tl0. 使用指令: mov th0 , #3ch

mov tl0 , #0b0h

当晶振为6mhz时,2us加一。50ms=50000us,50000/2=25000 所以赋初值为。

65536-25000=40536 ,将40536转换为十六进制为9e58h 高八位送th0, 第八位送tl0 , 使用指令 :mov th0 , #9eh

mov tl0 , #58h

当晶振为11.0592mhz时, 12/11.0592 us加一。 50ms=50000us, 50000*11.0592/12=46080 所以赋初值为。

65536-46080=19456 ,将19456转换为十六进制为4c00h 高八位送th0, 第八位送tl0 , 使用指令 :mov th0 , #4ch

mov tl0 , #00h

因为50ms闪烁一次太快,当要求2s进行一次闪烁时则需要中断 2s/50 ms=40次。

参考程序:(以12mhz为例)

org 0000h

ajmp main

org 0003h ;外部中断0的中断入口地址。

ajmp hysd

main:mov tmod,#01h ;设置t0工作方式1,且为定时。

mov ie,#81h ;cpu开中断和外部中断0开中断。

bt:clr p1.0

sjmp bt ;白天灭led且等待中断。

hysd:setb p1.0 ;亮led

mov ro,#40 ;定时40次,即:50ms*40=2s(这里亮2s)

lp:mov th0,#3ch ;赋初值。

mov tl0,#0b0h

setb tr0 ;启动定时。

jnb tf0,$ 等待50ms定时到,定时到后tf0为1

clr tf0 ;软件清除t0的溢出标志位tf0

djnz r0,lp ;判断是否有40次t0定时。

mov r0 , #

lp1: mov th0 , #3ch

mov tl0 , #0b0h

setb tr0

jnb tf0 ,

clr tf0

djnz r0 , lp1

jnb p3.2,hysd

reti18句

试题编号3105

考题:循环点亮8个发光二极管。

控制要求:利用左移或右移指令从左向右点亮并循环n次,或从右向左点亮并循环n次,循环完毕全部熄灭。(循环顺序及次数由考评员现场指定)

高电单片机实操程序。

1.电路原理图:

2.电路工作原理:

根据电路原理图可知:当某位输出为高电平时对应的led发光。要求从左向右移动时先从p1口输出***即:

80h 这时led7亮,其它灭,亮的时间可以通过延时确定。当向p1口送***即:40h 这时led6亮,其它灭,依次类推。

所以可以通过rr a指令实现。

从左向右移动参考程序:

org 0000h

mov r7 , #40 ;循环5次,一次需要依次点亮8个led,所以为40

mov a , #80h ;送初值给累加器acc,如果向左移动就用mov a , #01h

loop : mov p1, a ; 送p1口进行led显示。

acall delay ;显示的时间通过延时子程序决定。

rr a将a的内容循环右移动一位,如果向左移动就用rl a

djnz r7 , loop ;判断循环是否完毕。

mov p1, #00h

sjmp完毕后等待。

delay: mov r4,#5 ;延时0.5s子程序(fosc=6mhz),如fosc=12mhz,用#

d0: mov r5,#125 ;5*2us

d1: mov r6,#200 ;125*5*2*2us

d2: djnz r6,d2 ;200*125*5*2*2us

djnz r5,d1 ;125*5*2*2us

djnz r4,d0 ;5*2us

retend

从右向左移动参考程序:

org 0000h

mov r7 , #32 ;循环4次,一次需要依次点亮8个led,所以为32

mov a , #01h ;送初值给累加器acc用mov a , #01h亮led0

loop : mov p1, a ; 送p1口进行led显示。

acall delay ;显示的时间通过延时子程序决定。

rl a将a的内容循环左移动一位。

djnz r7 , loop ;判断循环是否完毕。

mov p1, #00h

高级电工单片机实操教案

试题编号3301 控制要求 在内部ram中20h开始的区域中存有二十个无符号数,找出其中最大和最小数,分别送34h和35h单元。注 目标程序于0800h单元开始 org 0000h ljmp main org 0800h main mov r0,20h 从内部20h单元开始查找。mov r7,19 ...

高级电工单片机实操试卷

试卷编号 a 姓名准考证号考核日期 年月日。考核时间定额 90 分钟开考时间 时分交卷时间 时分。监考人评卷人得分。考核说明 1.由考评员现场确定二十个无符号数 2.考试时间一到,所有考生必须停止操作,上交试卷,等候考评员通知进场给予一次运行机会 已运行两次的除外 3.在考评中因扣分易引起争议的项目...

高级电工实操试卷

试卷编号 3101 试卷类别 单片机应用技术。深圳市职业技能鉴定 电工 高级应会评分表。考核项目 查找大小数。姓名准考证号考核日期 年月日。考核时间定额 90 分钟开考时间 时分交卷时间 时分。监考人评卷人得分。考核说明 1.鉴定所提供单片机mcs51指令系统表 2.由考评员现场确定二十个无符号数 ...