1、第 1 页 共 30 页试题编号 3301控制要求:在内部 RAM 中 20H 开始的区域中存有二十个无符号数,找出其中最大和最小数,分别送 34H 和 35H 单元。 (注:目标程序于 0800H 单元开始)ORG 0000HLJMP MAINORG 0800HMAIN : MOV R0, #20H ;从内部 20H 单元开始查找MOV R7, #19 ;20 个数需要比较 19 次MOV 34H , R0 ;将 20H 单元的内容同时送 34H 和 35HMOV 35H, R0 LOOP : INC R0 ;指向下一个单元MOV A , R0 ; 读取到 ACCCJNE A , 34H ,
2、 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
3、的内容小于 35H 的内容则替换掉 35H 的内容EXIT : DJNZ R7 , LOOP ;判断比较次数是否完毕SJMP $ ;比较完毕原地等待END第 2 页 共 30 页开 始19 R720H R0(R0)+1 R0(R0) A(R0) 34H(R0) 35H(A) (34H)吗 ?(A) (34H)吗 ?(A) (35H)吗 ?(A) (35H)吗 ?(R7)-1 R7(R7) 0吗 ?等 待结 束Y N(A) 34HYNNY(A) 35HYNY N第 3 页 共 30 页3102控制要求:利用 8031 定时器与中断功能控制一个“航标灯”,黑夜时发光二极管按指定频率闪烁(如:亮 2
4、S,灭 2S,循环) ;白天时发光二极管不亮。电路图:电路工作原理:白天光敏电阻阻值小,使 P3.2 输入电位为高电平,不产生中断,使 LED 灭。晚上光敏电阻阻值变大,使 P3.2 的输入电位为低电平,这时产生中断,中断使 LED 闪烁。只要是在晚上要求 LED 一直闪烁。所以中断应该采用电平触发方式。调试方法:接好电路,编好程序,使光敏电阻暴露在光线下,调节 Rp 到最小值,这时 LED 应该闪烁。慢慢调大 Rp 的阻值,使 LED 刚刚灭,保持 Rp 这时的阻值即可。当用手遮住光敏电阻的光线,LED 就会闪烁。编程思路:使用定时器 T0,方式 1。所以 TMOD=0 0 0 0 0 0
5、0 1 即:01H 使用指令: MOV TMOD , #01H每 50ms 中断一次当晶振为 12MHZ 时,1us 加一。50ms 50000us。所以赋初值为655365000015536 ,将 15536 转换为十六进制为 3CB0H 高八位送 TH0, 第八位送 TL0. 使用指令: MOV TH0 , #3CH MOV TL0 , #0B0H当晶振为 6MHZ 时,2us 加一。50ms 50000us,50000/225000 所以赋初值为655362500040536 ,将 40536 转换为十六进制为 9E58H 高八位送 TH0, 第八位送 TL0 , 使用指令 :MOV T
6、H0 , #9EHMOV TL0 , #58HP1.0INT018031LEDR110kVT9013R2200P3.25V12Rp10k光敏电阻第 4 页 共 30 页当晶振为 11.0592MHZ 时, 12/11.0592 us 加一。 50ms50000us, 50000*11.0592/1246080 所以赋初值为655364608019456 ,将 19456 转换为十六进制为 4C00H 高八位送 TH0, 第八位送 TL0 , 使用指令 :MOV TH0 , #4CHMOV TL0 , #00H因为 50ms 闪烁一次太快,当要求 2S 进行一次闪烁时则需要中断 2S/50 ms
7、40 次。参考程序:(以 12MHZ 为例)ORG 0000HAJMP MAINORG 0003H ;外部中断 0 的中断入口地址AJMP HYSDMAIN:MOV TMOD,#01H ;设置 T0 工作方式 1,且为定时MOV IE,#81H ;CPU 开中断和外部中断 0 开中断BT:CLR P1.0 SJMP BT ;白天灭 LED 且等待中断HYSD:SETB P1.0 ;亮 LEDMOV RO,#40 ;定时 40 次,即:50ms*402S(这里亮 2S)LP:MOV TH0,#3CH ;赋初值MOV TL0,#0B0H SETB TR0 ;启动定时JNB TF0,$ ;等待 50
8、ms 定时到,定时到后 TF0 为 1CLR TF0 ;软件清除 T0 的溢出标志位 TF0DJNZ R0,LP ;判断是否有 40 次 T0 定时MOV R0 , #20LP1: MOV TH0 , #3CHMOV TL0 , #0B0HSETB TR0JNB TF0 , $CLR TF0DJNZ R0 , LP1JNB P3.2,HYSD RETI 18 句 第 5 页 共 30 页+5V121314 11 10 9 81 2 3 4 5 6 7CC4011Vcc 4A 4B 4Y 3Y 3B 3A1A 1B 1Y 2Y 2A 2B Vss试题编号 3105考题:循环点亮 8 个发光二极管
9、。控制要求:利用左移或右移指令从左向右点亮并循环 n 次,或从右向左点亮并循环 n 次,循环完毕全部熄灭。(循环顺序及次数由考评员现场指定)高电单片机实操程序1.电路原理图:8031P1.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.7XTAL2XTAL1Vss403938373635343332313029282
10、7262524232221VccP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VppALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0803180518751第 6 页 共 30 页2.电路工作原理:根据电路原理图可知:当某位输出为高电平时对应的 LED 发光。要求从左向右移动时先从 P1 口输出 10000000 即:80H 这时 LED7 亮,其它灭,亮的时间可以通过延时确定。当向 P1 口送 01000000 即:40H 这时 LED6 亮,其它灭,依次类推。所以可以通过 RR A 指令实现。从左向右移动参考程序:ORG 00
11、00HMOV R7 , #40 ;循环 5 次,一次需要依次点亮 8 个 LED,所以为 40MOV A , #80H ;送初值给累加器 ACC,如果向左移动就用 MOV A , #01HLOOP : MOV P1, A ; 送 P1 口进行 LED 显示ACALL DELAY ;显示的时间通过延时子程序决定RR A ;将 A 的内容循环右移动一位,如果向左移动就用 RL ADJNZ R7 , LOOP ;判断循环是否完毕MOV P1, #00HSJMP $ ;完毕后等待DELAY: MOV R4,#5 ;延时 0.5S 子程序(f OSC=6MHZ) ,如 fOSC=12MHZ,用#10D0
12、: MOV R5,#125 ;5*2usD1: MOV R6,#200 ;125*5*2*2usD2: DJNZ R6,D2 ;200*125*5*2*2usDJNZ R5,D1 ;125*5*2*2usDJNZ R4,D0 ;5*2usRET END从右向左移动参考程序:ORG 0000HMOV R7 , #32 ;循环 4 次,一次需要依次点亮 8 个 LED,所以为 32MOV A , #01H ;送初值给累加器 ACC 用 MOV A , #01H 亮 LED0LOOP : MOV P1, A ; 送 P1 口进行 LED 显示ACALL DELAY ;显示的时间通过延时子程序决定RL
13、 A ;将 A 的内容循环左移动一位DJNZ R7 , LOOP ;判断循环是否完毕MOV P1, #00HSJMP $ ;完毕后等待DELAY: MOV R4,#5 ;延时 0.5S 子程序(f OSC=6MHZ) ,如 fOSC=12MHZ,用#10D0: MOV R5,#125 ;5*2usD1: MOV R6,#200 ;125*5*2*2usD2: DJNZ R6,D2 ;200*125*5*2*2usDJNZ R5,D1 ;125*5*2*2us第 7 页 共 30 页DJNZ R4,D0 ;5*2usRET END从左向右移动 3 次,然后从右向左移动 2 次参考程序:ORG 0
14、000HMOV R7 , #24 ;循环 3 次,一次需要依次点亮 8 个 LED,所以为 24MOV A , #80H ;送初值给累加器 ACCLOOP : MOV P1, A ; 送 P1 口进行 LED 显示ACALL DELAY ;显示的时间通过延时子程序决定RR A ;将 A 的内容循环右移动一位DJNZ R7 , LOOP ;判断循环是否完毕MOV P1, #00HMOV R7 , #16 ;循环 2 次,一次需要依次点亮 8 个 LED,所以为 16MOV A , #01H ;送初值给累加器 ACCLOOP1 : MOV P1, A ; 送 P1 口进行 LED 显示ACALL
15、DELAY ;显示的时间通过延时子程序决定RL A ;将 A 的内容循环右移动一位DJNZ R7 , LOOP1 ;判断循环是否完毕MOV P1, #00HSJMP $ ;完毕后等待DELAY: MOV R4,#5 ;延时 0.5S 子程序(f OSC=6MHZ) ,如 fOSC=12MHZ,用#10D0: MOV R5,#125 ;5*2usD1: MOV R6,#200 ;125*5*2*2usD2: DJNZ R6,D2 ;200*125*5*2*2usDJNZ R5,D1 ;125*5*2*2usDJNZ R4,D0 ;5*2usRET END第 8 页 共 30 页+5V121314
16、 11 10 9 81 2 3 4 5 6 7CC4011Vcc 4A 4B 4Y 3Y 3B 3A1A 1B 1Y 2Y 2A 2B Vss高电实操 3103: 计数报警考题:利用 8031 计数器,当计数满 n 个后 LED 发光二极管发光报警。计数脉冲用消抖动开关产生。控制要求:按按钮开关 n 次,发光二极管发光。1.电路原理图:56R3R45.1kELDVT901310k2005VCC40115.1kJAT0(P 3.4)P1.080315VR1R2114 12345V第 9 页 共 30 页2.电路工作原理:考题要求,每按下一次按钮时计数一次,通过程序设定计数次数,按下次数到后 LE
17、D 亮(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 如果直接通过开关接入的话,会有很大的干扰,也就是按下或松开时会有抖动,造成按下一次可能会计数若干次。所以采用两个与非门组成一个触发器进行抗干扰(防抖动电路)解法一:用模式 1,不
18、可循环 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 ;计数到亮 LEDSJMP $ ;等待 END 解法二:用模式 2,可循环START:MOV TMOD,#06H ;模式 2,自动重装入 8 位计数器CLR P1.0 ;开始灭
19、LEDMOV TH0, #0F6H ;赋初值,模式 2 最多可计数 256 次。这里为 10 次MOV TL0, #0F6H ;初值为 256102460F6H,模式 2 赋初值一样SETB TR0 ;启动计数器LP: JBC TFO, REP ;计数未满顺序执行,满则跳 REP 同时将 TF0 清零。SJMP LPREP: CPL P1.0 ;将输出状态取反,第 10 页 共 30 页SJMP LP ;跳 LP 等待下次计数 10 次END高电考题 3104 : 数码管显示考题:利用 8031 串行口和 74LS164 移位寄存器驱动数码管。控制要求:数码管依次按指定的顺序循环并显示数字。1
20、.电路原理图:abcdefgh5V2208R18CL3161BS5V1478031P3.0(RXD)P3.1(TXD) P1.01011174LS164Q0Q1Q2Q3Q4Q5Q6Q7A B CK R1 2 8 9VssVcc20405V第 11 页 共 30 页2. 电路工作原理要求从串口将数据发送出去,所以串口为工作方式 0,也就是使 SCON00000000当执行 MOV A ,#3FHMOV SBUF , A 时,其发送动作为:P3.0(RXD)端送数据,低位在前,高位在后。P3.1(TXD)输出移位脉冲。示意如下:3FH = 0011 1111当八位数字发送完毕后单片机自动将 TI
21、置 1,没有发送完毕 TI 始终为 0根据硬件可知,P3.0 接在 74LS164 的数据输入端,P3.1 接在 74LS164 的时钟端。而74LS164 的功能为:第一个时钟来了将数据输入端的状态移位到 Q7 端,Q7 的状态到 Q6端依次类推最后 Q1 的状态到 Q0 端,Q0 状态丢失。第二个时钟脉冲来到再作一次全体移动。所以当来了 8 个时钟脉冲后。 原来第一次 Q7 的状态就到了 Q0。也就是当数据端随着时钟脉冲同步输出 00111111 时,8 个时钟脉冲过后 74LS164 的 Q7Q0 输出也为00111111,这时会使共阴数码管显示一个“3” 。SM0 SM1 SM2 RE
22、N SM0TB8 RB8 TI RI0 0 :工作方式 0 为移位寄存器第 12 页 共 30 页3.参考程序例如:规定按 1、3、5、7、9、2、4、6、8、0、A、B、C、D、E、F、-、P、 、熄灭 顺序循环显示。法一. START:MOV SCON,#00H ;串口为工作方式 0,8 位移位寄存器方式MOV R0,#0 ;送偏移量初值MOV DPTR,#TAB ;送表头首地址给 DPTR,也就是表 06H 所在的地址LP:MOV A,R0 MOVC A,A+DPTR ;查表,将查的的数据送 ACCCPL A ;如果为共阳 LED 就加上此句,否则不加MOV SBUF,A ;送串口进行发
23、送JNB TI,$ ;发送未完 TI 为 0 就等待,完则 TI 为 1 顺序执行CLR TI ;发送结束标志必须用软件清零INC R0 ;偏移量加一ACALL DELY ;调延时,也就是 LED 显示一位数字的时间CJNE R0,#20,LP ;因为表格有 20 个字节数据,所以这里为 20SJMP START ;从头在来,无限循环下去TAB: DB 06H, 4FH, 6DH, 07H, 6FH, 5BH, 66H, 7DH, 7FH, 3FH (共阴)DB 77H, 7CH, 39H, 5EH, 79H, 71H, 40H, 73H, 80H, 00HDELY: MOV R4,#5 ;延
24、时 0.5S 子程序(f OSC=6MHZ) ,如 fOSC=12MHZ,用#10D0: MOV R5,#125D1: MOV R6,#200D2: DJNZ R6,D2DJNZ R5,D1DJNZ R4,D0RET 思考题:如果显示为循环显示 8051CPU,每次间隔 1 秒,共大循环 5 次。试试如何改动程序。第 13 页 共 30 页74LS04Vcc 14Vss1 785V+5V121314 11 10 9 81 2 3 4 5 6 7CD4011试题编号(3106) 霓虹灯控制控制要求:实现 8 个发光二极管从两边向中间或从中间向两边依次循环点亮来模拟霓虹灯效果,循环 n 次后全部熄
25、灭。1. 电路原理图P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.78031VccVssLED1234567891011121314151617181920P1.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.
26、6P2.5P2.4P2.3P2.2P2.1P2.0803180518751第 14 页 共 30 页2. 电路工作原理根据硬件可知: P1 口某位输出为高电平,则对应的 LED 发光.示意图如下:如果要使得 LED4 和 LED3 亮,则 P1 口应该输出为: 00011000 即:18H 输出状态为:如果要使得 LED5 和 LED2 亮,则 P1 口应该输出为: 00100100 即:24H 输出状态为:如果要使得 LED6 和 LED1 亮,则 P1 口应该输出为: 01000010 即:42H 输出状态为:如果要使得 LED7 和 LED0 亮,则 P1 口应该输出为: 1000000
27、1 即:81H 输出状态为:因此,如果希望 LED 输出状态由中间向两边亮,则表格按照顺序填写: 18H,24H,42H,81H即可.根据此原理,无论状态如何变化都有对应的数据.3.参考程序:(1) 从中间向两边亮,每次点亮 0.5S 共 6 个循环后结束.ORG 0000HMOV DPTR , #LED ;送表首地址给 DPTRMOV R7, #6 ;此程序共 6 个循环LOOP1 : MOV R0 , #0 ;送偏移量初值LOOP : MOV A , R0LED7 LED6 LED5 LED4 LED3 LED2 LED1 LED0第 15 页 共 30 页MOVC A, A+DPTR ;
28、查表MOV P1 , A ;送 P1 口进行显示ACALL DELAY ;调用显示时间INC R0 ;偏移量加一CJNE R0 , #4 ,LOOP ;表格里个数据没循环完跳LOOPDJNZ R7 , LOOP1 ;6 次没有循环完跳 LOOP1MOV P1 , #00HSJMP $LED : DB 18H , 24H , 42H , 81H DELAY : ;延时秒程序 思考题:() 从两边向中间亮,每次状态亮秒,共个大循环后结束() 先从两边向中间亮次,再从中间向两边亮次,共个循环试卷编号(3107) :算术运算器第 16 页 共 30 页控制要求:分别在内部 RAM 中 20H 单元和
29、30H 单元置入两个数,进行(20H+30H) 30H 的算术运算,将运算结果通过串口通讯方式用 LED 显示出来。(提示:运算值不超过“F”)1. 参考电路2.电路工作原理:与试题编号 3104 的硬件一样,工作原理相同。abcdefgh5V2208R18CL3161BS5V1478031P3.0(RXD)P3.1(TXD) P1.01011174LS164Q0Q1Q2Q3Q4Q5Q6Q7A B CK R1 2 8 9VssVcc20405V1234567891011121314151617181920P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST/VPDRXD P3
30、.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.1P2.0803180518751第 17 页 共 30 页3.参考程序:ORG 0000HMOV A , 20H ;将 20H 的内容送累加器 ACCADD A , 30H ;将 A 的内容与 30H 的内容相加MOV
31、B , 30H ;将 30H 的内容送寄存器 BMUL AB ;将 A 的内容与 B 的内容相乘,低八位送 ACC,高八位送 BMOV DPTR, #TAB ;送显示 0F 的数据表格的表首地址到 DPTRMOVC A , A+DPTR ;查表MOV SBUF, A ;从串口发送进行显示JNB TI , $ ;等待发送完毕CLR TISJMP $TAB : DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH DB 6FH, 77H, 7CH, 39H, 5EH, 79H,71HEND试卷编号(3108):继电器控制1. 实训目的掌握软件延时程序,根据要
32、求熟练编写不同的延时时间程序。掌握隔离输出的常用方式之一:继电器隔离输出2. 控制要求:设计程序使 P10 反复输出高、低电平,通过继电器控制 LED1 和 LED2 轮流点亮。程序采用软件延时 n 秒。 (延时时间由考评员现场指定,闪烁时间15S)3.参考电路图:KAKA 继电器同相驱动器74LS07P1.08031VssVcc 40205V5VLED1 LED2R1220R22201N4001D1第 18 页 共 30 页4.工作原理:当 P1.0 输出为高电平时,经过同相器 74LS07 后输出也为高电平,这时 KA 两端电压相等,KA 不动作。这时 LED1 得电亮。当 P1.0 输出
33、为低电平时, 74LS07 输出也为低电平。KA 得电吸合。这时 LED2 亮。二极管 D 是为了续流而设。当 P1.0 轮流输出高低电平,则 LED1 和 LED2 轮流被点亮。5.参考程序:(该参考程序在 12MHZ 的晶振下运行,每 1.5S 两 LED 改变一次状态)ORG 0000HSTART : CPL P1.0 ;此程序每隔相同时间 P1.0 输出取反一次,相隔时间由子ACALL DELAY ;程序 DELAY 的延时时间决定SJMP STARTDELAY : MOV R6 , #15 ;此程序约为 1.5S(稍微大于 1.5S)M : MOV R5 , #200N : MOV
34、R4 , #250DJNZ R4 , $ ;此句执行时间为:2*1us*250*200*151.5SDJNZ R5 , NDJNZ R6 , MRETEND6.思考题:单片机复位后先亮 LED1 时间为 1S。再亮 LED2,时间为 2.5 秒。循环不止。第 19 页 共 30 页试卷编号(3109):倒计时音乐报警器1. 实训目的:熟悉简单的按键输入进行控制设备和显示2. 控制要求:按下起动按钮,数码管从“90”按递减顺序显示,当显示到“0”时,音乐响起,按下停止按钮,音乐停止。3. 参考电路图:4. 工作原理:单片机复位后先置 P1.1 为低电平然后等待启动按钮 QA 启动,启动后数码管先
35、显示 9,隔段时间后显示 8。依次往下显示。到显示 0 后置 P1.1 输出为高电平,这时音乐芯片加上了工作电压开始工作。扬声器就开始发音。当停止按钮(TA)按下,音乐停止。5.参考程序:ORG 0000HCLR P1.1 JB P3.2 , $MOV DPTR, #TABMOV R0 , #0CONT1 : MOV A, R0MOVC A , A+DPTRMOV SBUF , ALP1 : JBC TI , LPSJMP LP15Vabcdefgh2208R18CL3161BS5V1478031P3.0(RXD)P3.1(TXD) P1.01011174LS164Q0Q1Q2Q3Q4Q5Q6
36、Q7A B CK R1 2 8 9VssVcc20405V音乐芯片ZLGGTR9 22080.5W扬声器5VVssVcc P1.1P3.2P3.3QA TA信号第 20 页 共 30 页LP : CJNE A , #3FH , CONTSETB P1.1JB P3.3 , $CLR P1.1SJMP $CONT : ACALL DELAYSJMP CONT1TAB : DB 6FH , 7FH , 07H , 7DH, 6DH , 66H , 4FH , 5BH , 06H , 3FHDELAY : MOV R7 , #10M : MOV R6 , : , , $DJNZ R6 , NDJNZ
37、 R7 , MRETEND试卷编号(3110):数据传送1. 实训目的:熟练掌握单片机在执行数据传送和堆栈指令时内部的变化情况2. 控制要求:把 20H 单元开始的外部 RAM 单元中的 8 个数据送到 30H 单元开始的外部 RAM 单元中;存取要求:源数据存储地址及目的地数据存储地址使用堆栈。2. 在脱机运行下的参考程序:ORG 0000HMOV 70H,#20HMOV 71H,#30HMOV R7,#8LOOP : PUSH 71HPUSH 70HINC 70HINC 71HDJNZ R7,LOOPMOV R7,#8MOV DPH,#00HLOOP1 : POP DPLMOVX A, D
38、PTRPOP DPL第 21 页 共 30 页MOVX DPTR, ADJNZ R7, LOOP1SJMP $END循环灯点亮(高电实操题 3105)循环点亮 8 个发光二极管 LED。要求:按规定的顺序依次点亮 8 个 LED(每个亮0.5S),循环 N 次。要求:按 D1、D2、D3、D4、D5、D6、D7、D8 顺序依次点亮(每个亮 0.5S),循环 3 次。解:START:MOV R1,#3 LP0: MOV R0,#0 MOV DPTR,#TAB LP: MOV A,R0 MOVC A,A+DPTR MOV P1,A ACALL DELY INC R0 CJNE R0,#8,LP D
39、JNZ R1,LP0 MOV P1,#00H SJMP $ TAB: DB 01H,02H,04H,08H,10H,20H,40H,80HDELY: MOV R4,#5 ;延时 0.5S 子程序(f OSC=6MHZ) ,如 fOSC=12MHZ,用#10D0: MOV R5,#125D1: MOV R6,#200D2: DJNZ R6,D2DJNZ R5,D1DJNZ R4,D0RET ;共 20 句计数报警(高电实操 3103) 用 8031 计数器 T0,当计满 n 个数后,发光二极管 LED 发光报警。计数脉冲用消抖动开关产生,设 n = 10。用模式 2,可循环解法一:START:M
40、OV TMOD,#05H 法二:START:MOV TMOD,#06H第 22 页 共 30 页不可循环 MOV TH0,#0FFH CLR P1.0MOV TL0, #0F6H MOV TH0, #0F6H SETB TR0 MOV TL0, #0F6HCLR P1.0 SETB TR0JNB TF0, $ LP: JBC TFO, REPSETB P1.0 SJMP LPSJMP $ REP: CPL P1.0SJMP LP“航标灯” (高电实操题 3102) 利用 8031 定时器与中断功能控制一个“航标灯” ,要求:黑夜时发光二极管按指定的频率闪烁(例如:亮 2s、灭 2s、循环) ;
41、白天时发光二极管不亮。用定时器 T0,定时 50ms,模式 1,加软件延时到 2s。TMOD=00000001=01H fosc=12MHzT0 计数初值 X = 10000H - 1250103/12=3CB0H用 RO 软件计数 2s/ 50ms =40ORG 0000HAJMP MAINORG 0003HAJMP HYSDMAIN:MOV TMOD,#01H MOV IE,#81H BT:CLR P1.0 SJMP BT HYSD:CPL P1.0 MOV RO,#40 LP:MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 JNB TF0,$ CLR TF0 DJ
42、NZ R0,LP JNB P3.2,HYSD RETI 18 句 数码管显示(高电实操题 3104)利用 8031 串行口和 74LS164 驱动一个数码管,要求:数码管依次按指定的顺序循环并显示数字。例如:规定按 1、3、5、7、9、2、4、6、8、0、A、B、C、D、E、F、-、P、 、熄灭 顺序循环显示。法一. START:MOV SCON,#00H MOV R0,#0MOV DPTR,#TABLP:MOV A,R0MOVC A,A+DPTR第 23 页 共 30 页MOV SBUF,AJNB TI,$CLR TIINC R0ACALL DELYCJNE R0,#20,LPSJMP ST
43、ARTTAB: DB 06H, 4FH, 6DH, 07H, 6FH, 5BH, 66H, 7DH, 7FH, 3FH (共阴)DB 77H, 7CH, 39H, 5EH, 79H, 71H, 40H, 73H, 80H, 00HDELY: MOV R4, #10 ;延时 0.5s 子程序( fosc=12MHz ) RETMOV R0,#20HMOV R1,#19MOV 34H,R0MOV 35H,R0START : INC R0MOV A,R0CJNE A,34H,MSJMP EXITM : JC NMOV 34H,ASJMP EXITN : CJNE A,35H,SSJMP EXITS
44、: JNC EXIT第 24 页 共 30 页MOV 35H,AEXIT : DJNZ R1,STARTSJMP $END高电单片机实操程序循环灯点亮(高电实操题 3105)循环点亮 8 个发光二极管 LED。要求:按规定的顺序依次点亮 8 个 LED(每个亮0.5S),循环 N 次。要求:按 D1、D2、D3、D4、D5、D6、D7、D8 顺序依次点亮(每个亮 0.5S),循环 3 次。解:START:MOV R1,#3 LP0: MOV R0,#0 MOV DPTR,#TAB LP: MOV A,R0 MOVC A,A+DPTR MOV P1,A ACALL DELY INC R0 CJN
45、E R0,#8,LP DJNZ R1,LP0 MOV P1,#00H SJMP $ TAB: DB 01H,02H,04H,08H,10H,20H,40H,80HDELY: MOV R4,#5 ;延时 0.5S 子程序(f OSC=6MHZ) ,如 fOSC=12MHZ,用#10D0: MOV R5,#125D1: MOV R6,#200D2: DJNZ R6,D2DJNZ R5,D1DJNZ R4,D0RET ;共 20 句计数报警(高电实操 3103) 用 8031 计数器 T0,当计满 n 个数后,发光二极管 LED 发第 25 页 共 30 页光报警。计数脉冲用消抖动开关产生,设 n
46、= 10。用模式 2,可循环解法一:START:MOV TMOD,#05H 法二:START:MOV TMOD,#06H不可循环 MOV TH0,#0FFH CLR P1.0MOV TL0, #0F6H MOV TH0, #0F6H SETB TR0 MOV TL0, #0F6HCLR P1.0 SETB TR0JNB TF0, $ LP: JBC TFO, REPSETB P1.0 SJMP LPSJMP $ REP: CPL P1.0SJMP LP“航标灯” (高电实操题 3102) 利用 8031 定时器与中断功能控制一个“航标灯” ,要求:黑夜时发光二极管按指定的频率闪烁(例如:亮 2s、灭 2s、循环) ;白天时发光二极管不亮。用定时器 T0,定时 50ms,模式 1,加软件延时到 2s。TMOD=00000001=01H fosc=12MHzT0 计数初值 X = 10000H - 1250103/12=3CB0H用 RO 软件计