1、从22H单元开始存放一数据块,其长度存放在20H单元,编写一个数据块求和程序,要求将和存入21H单元,设和不超过255。
(5分) (1)2、编写一查表子程序。
设40单元中的内容为00~09之间的整数,求其平方值(BCD码),并将其存入41H单元中。
(5分) (2)3、有50个无符号8位二进制数,存放在内部RAM以BUFFR为首地址的连续单元中,试编写将其最小数存放到内部RAM的MIN单元的程序并画出相应的流程。
(10分) (2)4、用中断方法设计单片机秒、分脉冲发生器。
从P1.0每秒产生一个机器周期的正脉冲,从P1.1每分钟产生一个机器周期的正脉冲。
(10分) (3)5、将8255A的PA口设为方式0——基本输出方式,8255A的PB口设为方式1——选通输入方式,并在数据输入后会向CPU发出中断请求,不作控制用的C口端口数位全部输出,设PA口地址为4000H。
编写初始化程序。
(10分) (4)6、设字符串存放在以21H开始的内部RAM单元中,以“$”作结束标志,试计算该字符串的长度,并存入20H单元。
(5分) (4)7、编写一查表子程序。
设40单元中的内容为00~09之间的整数,求其立方值(BCD码),并将其存入41H单元中。
(5分) (5)8、设有50个无符号8位二进制数,存放在内部RAM以BUFFR为首地址的连续单元中,试编写将其最小数存放到内部RAM的MIN单元的程序并画出相应的流程。
(10分) (5)9、利用定时器T1产生50HZ的方波,由P1.1输出(f=6MHZ)。
(10分) (6)10、8051内部RAM的30H~39H中存放10个数,试编程采用串行口工作方式0把它逐个发送出去。
(10分) (6)11、7-4-4 (7)1、从22H单元开始存放一数据块,其长度存放在20H单元,编写一个数据块求和程序,要求将和存入21H单元,设和不超过255。
(5分)ORG 0000HLJMP STARTORG 2000HSTART: CLR AMOV R2, 20HMOV R1, #22HLOOP: ADD A, @R1INC R1DJNZ R2, LOOPMOV 21H, ASJMP $END2、编写一查表子程序。
设40单元中的内容为00~09之间的整数,求其平方值(BCD码),并将其存入41H单元中。
(5分)DAA DA TA 40HRES DA TA 41HORG 0000HLJMP STARTORG 2000HSTART: MOV A,DAAACALL SQRMOV RES,ASJMP $SQR: ADD A,#01HMOVC A,@A+PCRETSQRTAB: DB 00H,01H,04H,09H,16H,25H,36H,49H,64H,81HEND3、有50个无符号8位二进制数,存放在内部RAM以BUFFR为首地址的连续单元中,试编写将其最小数存放到内部RAM的MIN单元的程序并画出相应的流程。
(10分)BUFFR DATA 40HMIN DATA 50HORG 0000HLJMP STARTORG 2000HSTART: MOV R0,#BUFFRMOV R1,#49MOV A,@R0MOV MIN,ALOOP: INC R0MOV A,@R0CLR CSUBB A,MINJC LOOP1DJNZ R1, LOOPSJMP PRO_ENDLOOP1: MOV A,@R0MOV MIN,ADJNZ R1, LOOPPRO_END:SJMP $END4、用中断方法设计单片机秒、分脉冲发生器。
从P1.0每秒产生一个机器周期的正脉冲,从P1.1每分钟产生一个机器周期的正脉冲。
(10分)答:假设f osc=6MHZ,用T0在模式1下,定时100ms时,定时初值x=216-1210006100⨯⨯=15536=3CB0H ORG 0000HLJMP MAINORG 000BHLJMP INT_T0ORG 2000HMAIN: MOV SP,#60HMOV R1,#10MOV R2,#60MOV TMOD,#01HMOV TL0,#0B0HMOV TH0,#3CHSETB TR0SETB ET0SETB EACLR P1.0CLR P1.1SJMP $INT_T0: MOV TL0,#0B0HMOV TH0,#3CHDJNZ R1,LOOP1MOV R1,#10SETB P1.0NOPCLR P1.0DJNZ R2,LOOP1MOV R2,#60SETB P1.1NOPCLR P1.1LOOP1: RETIEND5、将8255A的PA口设为方式0——基本输出方式,8255A的PB口设为方式1——选通输入方式,并在数据输入后会向CPU发出中断请求,不作控制用的C口端口数位全部输出,设PA口地址为4000H。
编写初始化程序。
(10分)答:控制字为10000110B=86H为保证断口B开放中断,对端口PC.2置1,控制字为00000101B=05HMOV DPTR,#4003HMOV A,#86HMOVX @DPTR,AMOV A,#05HMOVX @DPTR,A6、设字符串存放在以21H开始的内部RAM单元中,以“$”作结束标志,试计算该字符串的长度,并存入20H单元。
(5分)ORG 0000HLJMP STARTORG 2000HSTART: CLR AMOV R0,#21HLOOP: CJNE @R0,#24H,NEXTSJMP COMPNEXT: INC AINC R0SJMP LOOPCOMP: MOV 20H,ASJMP $END7、编写一查表子程序。
设40单元中的内容为00~09之间的整数,求其立方值(BCD码),并将其存入41H单元中。
(5分)DAA DATA 40HORG 0000HLJMP STARTORG 2000HSTART: MOV A,DAAADD A,DAAMOV R2,AADD A,#10MOVC A,@A+PCMOV 41H,AMOV A,R2ADD A,#04MOVC A,@A+PCMOV 42H,ASJMP $SQRTAB:DB 00H,00H,00H,01HDB 00H,08H,00H,27HDB 00H,64H,01H,25HDB 02H,16H,03H,43HDB 05H,12H,07H,29HEND8、设有50个无符号8位二进制数,存放在内部RAM以BUFFR为首地址的连续单元中,试编写将其最小数存放到内部RAM的MIN单元的程序并画出相应的流程。
(10分)BUFFR DATA 40HMIN DATA 50HORG 0000HLJMP STARTORG 2000HSTART: MOV R0,#BUFFRMOV R1,#49MOV A,@R0MOV MIN,ALOOP: INC R0CLR CSUBB A,MINJC LOOP1DJNZ R1, LOOPSJMP PRO_ENDLOOP1: MOV A,@R0MOV MIN,ADJNZ R1, LOOPPRO_END:SJMP $END9、利用定时器T1产生50HZ的方波,由P1.1输出(f=6MHZ)。
(10分)答:假设T1工作在方式1下,方波周期T=20ms,用T1定时10ms,计算初值X为X=216-121000106⨯⨯=65536-5000=60536=EC78HORG 0000HLJMP STARTORG 2000HSTART: MOV TMOD,#10HSETB TR1LOOP: MOV TH1,#0ECHMOV TL1,#78HJNB TF1,$CLR TF1CPL P1.1SJMP LOOPEND10、8051内部RAM的30H~39H中存放10个数,试编程采用串行口工作方式0把它逐个发送出去。
(10分)ORG 0000HLJMP STARTORG 2000HSTART: MOV SCON,#00HMOV R1,#10 LOOP: MOV A,@R0INC R0MOV SBUF,A WAIT: JNB TI,WAITCLR TIDJNZ R1,LOOPSJMP $END11、7-4-4ORG 0000HLJMP MAINORG 0003HLJMP INTR0ORG 0050HMAIN:MOV 30H,#01HMOV 31H,#0FHMOV R0,#02HMOV A,#88HMOV DPTR,#0FEFCHMOVX @DPTR,AINC DPTRMOV A,#93HMOVX @DPTR,AMOV DPTR,#0FEF8HMOV A,#0C2HMOVX @DPTR,AMOV IE,#81HSETB IT0SJMP $INTR0:MOV A,#88HMOV DPTR,#0FEFCH MOVX @DPTR,A INC DPTRMOV A,#93HMOVX @DPTR,A MOV DPTR,#0FEF8H MOV A,#0C2H MOVX @DPTR,A MOV DPTR,#0FEFBH MOVX A,@ DPTR ANL A,#01HJZ LOOPMOV A,30HRL AMOV 30H,AMOV DPTR,#0FEFAH MOVX @DPTR,A AJMP RETURN LOOP:DJNZ R0,RETURN MOV R0,#02HMOV A,31HCPL AMOV 31H,AMOV DPTR,#0FEFAHMOVX @DPTR,ARETURN:RETIEND。