高级电工单片机实操教程.doc
《高级电工单片机实操教程.doc》由会员分享,可在线阅读,更多相关《高级电工单片机实操教程.doc(35页珍藏版)》请在三一办公上搜索。
1、高级电工单片机实操教程-作者:-日期:试题编号3301控制要求:在内部RAM中20H开始的区域中存有二十个无符号数,找出其中最大和最小数,分别送34H和35H单元。(注:目标程序于0800H单元开始) ORG 0000HLJMP MAINORG 0800HMAIN : 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 ;将读取的内
2、容与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 , LOO
3、P ;判断比较次数是否完毕 SJMP $ ;比较完毕原地等待 END3102控制要求:利用8031定时器与中断功能控制一个“航标灯”,黑夜时发光二极管按指定频率闪烁(如:亮2S,灭2S,循环);白天时发光二极管不亮。电路图:P1.0INT018031LEDR110kVT9013R2200P3.25V12Rp10k光敏电阻电路工作原理:白天光敏电阻阻值小,使P3.2输入电位为高电平,不产生中断,使LED灭。晚上光敏电阻阻值变大,使P3.2的输入电位为低电平,这时产生中断,中断使LED闪烁。只要是在晚上要求LED一直闪烁。所以中断应该采用电平触发方式。调试方法: 接好电路,编好程序,使光敏电阻暴露
4、在光线下,调节Rp到最小值,这时LED应该闪烁。慢慢调大Rp的阻值,使LED刚刚灭,保持Rp这时的阻值即可。当用手遮住光敏电阻的光线,LED就会闪烁。编程思路: 使用定时器T0,方式1。所以TMOD=0 0 0 0 0 0 0 1 即:01H 使用指令: MOV TMOD , #01H 每50ms中断一次当晶振为12MHZ时,1us加一。50ms50000us。所以赋初值为 655365000015536 ,将15536转换为十六进制为3CB0H 高八位送TH0, 第八位送TL0. 使用指令: MOV TH0 , #3CH MOV TL0 , #0B0H 当晶振为6MHZ时,2us加一。50m
5、s50000us,50000/225000 所以赋初值为 655362500040536 ,将40536转换为十六进制为9E58H 高八位送TH0, 第八位送TL0 , 使用指令 :MOV TH0 , #9EH MOV TL0 , #58H当晶振为11.0592MHZ时, 12/11.0592 us加一。 50ms50000us, 50000*11.0592/1246080 所以赋初值为 655364608019456 ,将19456转换为十六进制为4C00H 高八位送TH0, 第八位送TL0 , 使用指令 :MOV TH0 , #4CH MOV TL0 , #00H因为50ms闪烁一次太快,
6、当要求2S进行一次闪烁时则需要中断2S/50ms40次。参考程序:(以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*402S(这里亮2S) LP:MOV TH0,#3CH ;赋初值MOV TL0,#0B0H SETB TR0 ;启动定时J
7、NB TF0,$ ;等待50ms定时到,定时到后TF0为1CLR TF0 ;软件清除T0的溢出标志位TF0DJNZ R0,LP ;判断是否有40次T0定时MOV R0 , #20LP1: MOV TH0 , #3CH MOV TL0 , #0B0H SETB TR0 JNB TF0 , $ CLR TF0 DJNZ R0 , LP1JNB P3.2,HYSD RETI 18句 试题编号3105考题:循环点亮8个发光二极管。控制要求:利用左移或右移指令从左向右点亮并循环n次,或从右向左点亮并循环n次,循环完毕全部熄灭。(循环顺序及次数由考评员现场指定)高电单片机实操程序1.电路原理图:8031P
8、1.0P1.7R0R7200LED0LED7CC4011CC40115V1234567891011121314151617181920P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST/VPDRXD P3.0TXD P3.1INT0 P3.2INT1 P3.3T0 P3.4T1 P3.5WR P3.6RD P3.7XTAL2XTAL1Vss4039383736353433323130292827262524232221VccP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VppALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2
9、.1P2.0803180518751+5V1213141110981234567CC4011Vcc4A4B4Y3Y3B3A1A1B1Y2Y2A2BVss2.电路工作原理:根据电路原理图可知:当某位输出为高电平时对应的LED发光。要求从左向右移动时先从P1口输出10000000即:80H这时LED7亮,其它灭,亮的时间可以通过延时确定。当向P1口送01000000即:40H这时LED6亮,其它灭,依次类推。所以可以通过RR A指令实现。 从左向右移动参考程序:ORG 0000HMOV R7 , #40 ;循环5次,一次需要依次点亮8个LED,所以为40MOV A , #80H;送初值给累加器AC
10、C,如果向左移动就用MOV A , #01HLOOP : MOV P1, A;送P1口进行LED显示ACALL DELAY ;显示的时间通过延时子程序决定RR A ;将A的内容循环右移动一位,如果向左移动就用RL ADJNZ R7 , LOOP ;判断循环是否完毕 MOV P1, #00H SJMP $ ;完毕后等待 DELAY: MOV R4,#5 ;延时0.5S子程序(fOSC=6MHZ),如fOSC=12MHZ,用#10D0: MOV R5,#125 ;5*2usD1: MOV R6,#200 ;125*5*2*2usD2: DJNZ R6,D2 ;200*125*5*2*2us DJN
11、Z R5,D1 ;125*5*2*2us DJNZ R4,D0 ;5*2us RET END从右向左移动参考程序:ORG 0000HMOV R7 , #32 ;循环4次,一次需要依次点亮8个LED,所以为32MOV A , #01H;送初值给累加器ACC用MOV A , #01H亮LED0LOOP : MOV P1, A;送P1口进行LED显示ACALL DELAY ;显示的时间通过延时子程序决定RL A ;将A的内容循环左移动一位DJNZ R7 , LOOP ;判断循环是否完毕 MOV P1, #00H SJMP $ ;完毕后等待DELAY: MOV R4,#5 ;延时0.5S子程序(fOS
12、C=6MHZ),如fOSC=12MHZ,用#10D0: MOV R5,#125 ;5*2usD1: MOV R6,#200 ;125*5*2*2usD2: DJNZ R6,D2 ;200*125*5*2*2us DJNZ R5,D1 ;125*5*2*2us DJNZ R4,D0 ;5*2us RET END从左向右移动3次,然后从右向左移动2次参考程序:ORG 0000HMOV R7 , #24 ;循环3次,一次需要依次点亮8个LED,所以为24MOV A , #80H;送初值给累加器ACCLOOP : MOV P1, A;送P1口进行LED显示ACALL DELAY ;显示的时间通过延时子
13、程序决定RR A ;将A的内容循环右移动一位DJNZ R7 , LOOP ;判断循环是否完毕 MOV P1, #00HMOV R7 , #16 ;循环2次,一次需要依次点亮8个LED,所以为16MOV A , #01H;送初值给累加器ACCLOOP1 : MOV P1, A;送P1口进行LED显示ACALL DELAY ;显示的时间通过延时子程序决定RL A ;将A的内容循环右移动一位DJNZ R7 , LOOP1 ;判断循环是否完毕 MOV P1, #00H SJMP $ ;完毕后等待 DELAY: MOV R4,#5 ;延时0.5S子程序(fOSC=6MHZ),如fOSC=12MHZ,用#
14、10D0: MOV R5,#125 ;5*2usD1: MOV R6,#200 ;125*5*2*2usD2: DJNZ R6,D2 ;200*125*5*2*2us DJNZ R5,D1 ;125*5*2*2us DJNZ R4,D0 ;5*2us RET END高电实操3103: 计数报警考题:利用8031计数器,当计数满n个后LED发光二极管发光报警。计数脉冲用消抖动开关产生。控制要求:按按钮开关 n次,发光二极管发光。+5V1213141110981234567CC4011Vcc4A4B4Y3Y3B3A1A1B1Y2Y2A2BVss56R3R45.1kELDVT901310k2005V
15、CC40115.1kJAT0(P3.4)P1.080315VR1R211412345V1.电路原理图:2.电路工作原理:考题要求,每按下一次按钮时计数一次,通过程序设定计数次数,按下次数到后LED亮(P1.0输出高电平)。根据硬件结构可知:按键输入为计数器T0。所以T0在这里不能作为定时器,而是作为计数器。所以TMOD=0000 0100 (13位计数器)采用指令MOV TMOD, #04H或TMOD=0000 0101(16位计数器)采用指令MOV TMOD,#05H或TMOD=0000 0110(自动重装入8位计数器)采用指令MOV TMOD ,#06H输入管脚P3.4如果直接通过开关接入
16、的话,会有很大的干扰,也就是按下或松开时会有抖动,造成按下一次可能会计数若干次。所以采用两个与非门组成一个触发器进行抗干扰(防抖动电路)解法一:用模式1,不可循环 START:MOV TMOD,#05H ;设置T0为16位计数器 MOV TH0,#0FFH ;赋初值此处计数10次。因为16位最多可计数65536 MOV TL0, #0F6H ;次,初值赋6553610655260FFF6H SETB TR0 ;启动计数器 CLR P1.0 ;计数未到灭LED JNB TF0, $ ;等待计数到。如果计数到则TF0自动变为“1” SETB P1.0 ;计数到亮LED SJMP $ ;等待 END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 电工 单片机 教程
链接地址:https://www.31ppt.com/p-4299268.html