単片機の第1回実験授業——Keilソフトウェアの使用
1058 ワード
(1)R 1 R 0とR 3 R 2のうちの2つの4ビットBCD符号数を加算した結果、R 5 R 4に送り、キャリーがあればキャリービットCに格納する.(2)外部データメモリ0000 H〜0010 Hの内容をシート内データメモリ60 H〜70 Hユニットに転送する.
(1)
1)アセンブリ
(2)
1)アセンブル(ルックアップ表に初期値を付与し、循環に初期値を付与することもできる):
2)c言語
(1)
1)アセンブリ
; 1.1
ORG 0000H
CLR C
MOV R1,#36H
MOV R0,#64H
MOV R3,#24H
MOV R2,#51H
MOV A,R0
ADD A,R2
DA A
MOV R4,A
MOV A,R1
ADDC A,R3
DA A
MOV R5,A
SJMP $
END
(2)
1)アセンブル(ルックアップ表に初期値を付与し、循環に初期値を付与することもできる):
; 1.2
ORG 0000H
MOV DPTR,#D
MOV R0,#00H
MOV P2,#00H
LOOP:;
MOV A,R0
MOVC A,@A+DPTR
MOVX @R0,A
INC R0
CJNE R0,#11H,LOOP
MOV R0,#00H
MOV R1,#60H
LOOP1:; RAM RAM
MOV A,R0
MOVX A,@R0
INC R0
MOV @R1,A
INC R1
CJNE R0,#11H,LOOP1
SJMP $
D: DB 18H,04H,06H,01H,0AH,05H,02H,03H,07H,08H,10H,13H,11H,12H,16H,14H,15H ;
END
2)c言語
// 1-2
#include"reg51.h"
#define uchar unsigned char
uchar xdata X_RAM[17] _at_ 0x0000;
uchar data I_RAM[17] _at_ 0x0060;
void main(){
uchar i;
for (i = 0; i < 17; i++) {
X_RAM[i]=i+1;
}
for (i = 0; i < 17; i++) {
I_RAM[i]=X_RAM[i];
}
while(1);
}