试题编号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.由考评员现场确定二十个无符号数 ...