単片機の第1回実験授業——Keilソフトウェアの使用


(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)アセンブリ
;  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);
}