循环3次即可。
MOV R0, #20H ;加数1地址、和的地址
MOV R1, #30H ;加数2地址
CLR C
MOV R2, #3 ;循环3次
A_LOOP:
MOV A, @R0 ;取
ADDC A, @R1 ;加
MOV @R0, A ;存
INC R0
INC R1
DJNZ R2, A_LOOP
CLR A
ADDC A, #0 ;得到进位
MOV 23H, A ;保存
RET
2. 求解单片机编程题目
一、将(0~99)的100个连续十进制数,依次存入首地址为2000H的RAM区的存储单元中去。
MOV DPTR, #2000H
MOV A, #0
MOV R1, #100
LOOP:
MOVX @DPTR, A
INC A
INC DPTR
DJNZ R1, LOOP
SJMP $
二、定时/计数器进行初始化编程。
MOV TMOD, #01010001B
MOV TH1, #(65536-10000)/256
MOV TL1, #(65536-10000)%256
MOV TH0, #(65536-50000)/256
MOV TL0, #(65536-50000)%256
SETB TR1
SETB TR0
SETB ET1
SETB ET0
SETB EA
SETB PT1
CLR PT0
SJMP $
3. 51单片机编程题,要求每条语句写出注释。求解答。
单片机P2口分别接8个发光二极管的阴极,阳极已经接+5V电源,试编写8灯闪烁的程序(闪烁时间间隔500ms)。
程序如下
#include <reg51.h>
//延时10ms子程序
void Delay10ms(unsigned int c)
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
void main()
{
while(1)
{
P2=0x00;//P2口8个灯全亮
Delay10ms(50);//延时500ms
P2=0xff;//P2口8个灯全灭
Delay10ms(50);//延时500ms
}
}
仿真图
4. 三道单片机编程题目
编写航行标灯控制程序,系统晶振频率单位为6MHz,要求航标灯在白天熄灭,在夜晚断续点亮,时间间隔2秒,即亮2秒,暗2秒,周期循环进行。
--第一、需要先设计出来时钟。
--第二、时间不清,白天,还是晚上,这说法不准确。
下图为某AT89C51应用系统的三位led8段共阳极静态显示器的接口电路,
(1)该静态显示器电路与动态扫描的的显示器电路相比有哪些优缺点?
--看书吧。
(2)写出显示字符“x”,“y”,“z”的段码,
注意,段码的最低位为“a”段,段码的最高位为“dp”段
--y:91H。
--x、z:无法显示。
已知8255A的PA口,PB口,和PC口的地址分别为FF7CH,FF7DH,FF7EH,
且这三个端口均已被编写完毕的初始化程序初始化为方式0输出,
请编写出使三位LED共阳极显示器从左至右显示3.85的程序段。
--那一位显示器安装在左边?
--这题目,也太含糊了。
--假设左边是PA口,右边是PC口。
MOV DPTR, #0FF7CH
MOV A, #30H ;3. 的段码
MOVX @DPTR, A
INC DPTR
MOV A, #80H ;8 的段码
MOVX @DPTR, A
INC DPTR
MOV A, #92H ;5 的段码
MOVX @DPTR, A
END
5. 两道单片机编程题目,用汇编语言
第一题:
ASC:
PUSH ACC
ANL A,#0FH
ADD A,#30H
MOV R2,A
POP ACC
ANL A,#0F0H
SWAP A
ADD A,#30H
MOV R3,A
RET
第二题:
BCDZH:
MOV R0,#20H
MOV R1,#30H
MOV R2,#16
LOOP:
MOV A,@R0
MOV B,A
INC R0
MOV A,@R0
SWAP A
ORL A,B
MOV @R1,A
INC R0
INC R1
DJNZ R2,LOOP
RET