循環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