关于单片机的几道编程题,给50分,求帮助。

编程题:
1十六位二进制数求补程序
2查找在内部RAM的50H~80H单元中是否有0FFH这一数据。若有,则将81H单元置为“01H”;若未找到,则将81H单元置为“00H”
3编程实现如下功能,使蜂鸣器周而复始的响20ms, 停20ms,晶振频率。
4编写一程序,把片外RAM从1000H开始存放的200个数据存放到片内RAM 从30H开始的单元中。
5设时钟频率为12MHZ,要求采用模式1,编写利用T0产生0.5S的定时程序

6用P1口做输出口,控制8个发光二极管,编写程序,用软件延时方式使8个发光二极管从右到左循环点亮(假定低电平灯亮)
补充下,第3题的晶振频率为6MHZ

1:
BM16:
MOV A,R3
JNB ACC.7,BMR
MOV A,R2
CPL A
ADD A,#1
MOV R2,A
MOV A,R3
CPL A
ADDC A,#0
SETB ACC.7
MOV R3,A
BMR:
RET
2:
CHKFF:
MOV R2,#30H
MOV R0,#50H
LOOP:
MOV A,@R0
CJNE A,#0FFH,LOOP1
MOV R0,#81H
MOV @R0,#01H
RET
LOOP1:
INC R0
SJMP LOOP
3:
FMQ:
CLR P1.0
LCALL DELAY
SETB P1.0
LCALL DELAY
SJMP FMQ
DELAY:
MOV R2,#10
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
4:
MDAT:
MOV DPTR,#1000H
MOV R2,#200
MOV R0,#30H
MLP:
MOVX A,@DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ R2,MLP
RET
5:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0INT
ORG 0030H
T0INT:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
INC R2
MOV A,R2
CJNE A,#10,T0RET
MOV R2,#0
SETB 00H
T0RET:
RETI
MAIN:
MOV SP,#5FH
MOV TMOD,#01H
SETB TR0
SETB ET0
SETB EA
MOV R2,#0
CLR 00H
SJMP $
END
6:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
MOV A,#0FEH
LOOP:
MOV P1,A
LCALL DELAY
RL A
SJMP LOOP
DELAY:
MOV R2,#100
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
温馨提示:答案为网友推荐,仅供参考