没有合适的资源?快使用搜索试试~ 我知道了~
高级电工单片机实操教程.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 143 浏览量
2022-07-05
08:07:45
上传
评论
收藏 512KB DOC 举报
温馨提示
试读
32页
高级电工单片机实操教程.doc
资源推荐
资源详情
资源评论
.
1 / 32
高级电工单片机实操教程
-----------------------
-----------------------日期:
试题编号 3301
控制要求:在部 RAM 中 20H 开始的区域中存有二十个无符号数,找出其中最大和最小数,
分别送 34H 和 35H 单元。(注:目标程序于 0800H 单元开始)
.
2 / 32
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
开 始
1 9 → R 7
2 0 H → R 0
( R 0 ) + 1 → R 0
( ( R 0 ) ) → A
( ( R 0 ) ) → 3 4 H
( ( R 0 ) ) → 3 5 H
( A ) ≠ ( 3 4 H ) 吗 ?
( A ) > ( 3 4 H ) 吗 ?
( A ) ≠ ( 3 5 H ) 吗 ?
( A ) < ( 3 5 H ) 吗 ?
( R 7 ) - 1 → R 7
( R 7 ) ≠ 0 吗 ?
等 待
结 束
Y
N
( A ) → 3 4 H
Y
N
N
Y
( A ) → 3 5 H
Y
N
Y
N
.
3 / 32
3102
控制要求:利用 8031 定时器与中断功能控制一个“航标灯”,黑夜时发光二极管按指定频
率闪烁(如:亮 2S,灭 2S,循环);白天时发光二极管不亮。
电路图:
.
4 / 32
电路工作原理:
白天光敏电阻阻值小,使 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
P1.0
INT0
1
8031
LED
R1
10kΩ
VT
9013
R2
200Ω
P3.2
+5V
12
Rp
10kΩ
光敏电阻
.
5 / 32
因为 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 , #20
LP1: MOV TH0 , #3CH
MOV TL0 , #0B0H
SETB TR0
JNB TF0 , $
CLR TF0
DJNZ R0 , LP1
JNB P3.2,HYSD
RETI 18 句
试题编号 3105
考题:循环点亮 8 个发光二极管。
控制要求:利用左移或右移指令从左向右点亮并循环 n 次,或从右向左点亮并循环 n 次,循
环完毕全部熄灭。(循环顺序与次数由考评员现场指定)
高电单片机实操程序
剩余31页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3642
- 资源: 59万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功