ADD A,30H MOV 40H,A
10.将累加器A的低4位数据送P1口的高4位,P1口的低4位保持不变。
ANL A,#0FH SWAP A
ANL P1,#0FH ORL P1,A SJMP $
11.编程将R0,R1内容相交换
MOV A,R0 XCH A,R1 MOV R0,A SJMP $
12. 利用查表指令求出30H单元中数值的阶乘,该数值为0-5范围的数,结果存入20H单元 MOV R0,#30H MOV A,@R0 MOV DPTR,#TAB MOVC A,@A+DPTR MOV 20H,A
TAB:DB 0,1,2,6,24,120 SJMP $ END
六、程序设计:
1.有晶振频率为6MHZ的MCS-51单片机,使用定时器1以定时方式1在P1.0输出频率为5KHz的等宽矩形波,用中断方式产生。
分析:频率为5KHz的方波,即周期为0.2ms, 则每0.1ms产生一次中断,6MHZ,则机器周期为2μS,方式2,则 100H-32H=0CEH
ORG 0000H LJMP MAIN ORG 001BH LJMP T1
MAIN:MOV TMOD,#20H
MOV IE,#88H MOV TH1,#0CEH MOV TL1,#0CEH SETB P1.0 SETB TR1
HERE: AJMP HERE T1: CPL P1.0 RETI
END 2、有晶振频率为12MHZ的MCS-51单片机,使用定时器0以定时方式2在P1.3输出频率为10KHz占空比时1:5的矩形波,用中断方式产生。
分析:频率为10KHz的占空比时1:5的矩形波,即周期为20μS, 则每20 μS 产生一次中断, 单片机晶振频率12MHZ,则机器周期为1μS,方式2,则 100H-14H=0ECH
ORG 0000H LJMP MAIN
6
ORG 000BH LJMP T00
MAIN:MOV 40H,#00H
MOV TMOD,#02H MOV IE,#82H MOV TH0,#0ECH MOV TL0,#0ECH SETB P1.3 SETB TR0
HERE:AJMP HERE T00:INC 40H MOV A,40H
CJNE A,#01H,BF SJMP COM
BF:CJNE A,#05H,DONE MOV 40H,#00H COM: CPL P1.3 DONE:RETI END
3.有晶振频率为6MHZ的MCS-51单片机,其P1口控制8只发光二极管(高电平点亮),要求使用定时器1用中断方式定时,控制8只发光二极管由高位向低位时间间隔1秒依次轮流点亮,试编程实现之。
分析: 6MHZ的主频,则计数脉冲为2μS,使用定时器1工作于方式0,计算定时100ms的初值16
2-100000us/2us=3CB0H,同时采用R2做软件计数器,初值为10,从而实现1秒钟的定时。
ORG 0000H LJMP MAIN ORG 001BH LJMP BRT1 ORG 0100H
MAIN:MOV TMOD,#10H
MOV IE,#88H MOV TH1,#3CH MOV TL1,#0B0H MOV R2,#10 MOV A,#80H MOV P1,A SETB TR1
HERE: AJMP HERE BRT0:DJNZ R2,DONE MOV R2,#10 RR A MOV P2,A DONE:MOV TH1,#3CH MOV TL1,#0B0H RETI
END
七、A/D转换部分
1. 使用A/D转换器ADC0809芯片与MCS-51单片机8051设计一个巡回检测系统,共有6路模拟量输入,采样6路分别放入30H~35H单元,用查询方式,画出硬件电路框图并编写程序(单片机晶振为6MHZ)。
7
2.
8 A P0 B 74LS C G 373 8 D0~D7 CLK 8751 ALE ÷2 ADC0809 EOC P1.0 IN0~IN5 ST WR + ALE P2.0 OE + RD 答:硬件电路如上
程序如下:
ABC: MOV R0,#30H
MOV R7,#06H MOV DPTR,#0000H LOOP:
MOVX @DPTR,A ;启动0路A/D WAIT:JNB P1.0,WAIT
MOVX A,@DPTR MOV @R0,A INC R0 INC DPTR DJNZ R7,LOOP AJMP ABC END
2、 用A/D转换器ADC0809芯片与MCS-51单片机8751设计一个巡回检测系统,共有6路模拟量输入,采样6路
分别放入30H~35H单元,用中断方式,画出硬件电路框图并编写程序(单片机晶振为6MHZ)。 8 A B 74LS P0 C 373 8 D0~D7 CLK 8751 ALE ÷2 ADC0809 EOC INT1 IN0~IN5 IN0~IN5 WR ST + ALE P2.0 OE + RD
8
ORG 0000H LJMP START ORG 0013H LJMP INT
START:MOV R0,#30H
MOV R7,#06H MOV DPTR,#0000H SETB EA SETB EX1
SETB IT1 MOVX @DPTR,A
SJMP $
INT:MOVX A,@DPTR
MOV @R0,A INC R0 INC DPTR
DJNZ R7,LOOP MOV R0,#30H MOV R7,#6
MOV DPTR,#0000H LOOP:MOVX @DPTR,A
RETI END
9