ProMicroCH552をアセンブリ言語でLチカしてみた

CH552

ProMicroCH552(AKITA-023)をアセンブリ言語でLチカしてみました。

ProMicroCH552は、CH552のマイコンボードです。

main.asm

.area HOME (CODE)
.area XSEG (XDATA)
.area PSEG (PAG,XDATA)
.area RSEG (ABS,DATA)
P1 = 0x90 ;p262
P2 = 0xA0 ;
P3 = 0xB0
.area CSEG (ABS,CODE)
_start:
	xrl P1, #255 ; xor
	mov A, #100
	push A
wait1_bloop:	
	mov A, #255
wait1_loop:
	nop
	nop
	nop
	dec A
	jnz wait1_loop
	pop A
	dec A
	push A	
	jnz wait1_bloop
	ljmp _start

PowerShellを使って、sdccでhexファイルを生成しました。数値は合っているかわかりません。

make.bat

cd /D %~dp0
sdas8051 -l -o -s  main.asm 
sdcc -mmcs51  --iram-size 256 --xram-size 1024 --code-size 16384 main.rel
packihx main.ihx > main.hex

書き込みにはWCHISPStudio_V350を使いました。

E8051 USB MCUsを選択しておきます。

Chip Model はCH552です。

接続するにはボードのBootloadスイッチを押しながらUSBケーブルを挿します。

Object File1に生成したhexファイルを指定して、Downloadを押すと書き込まれて黄色のLEDが点滅しました。

このプログラムのコードをもっと短くできるので変えてみました。

.area HOME (CODE)
.area XSEG (XDATA)
.area PSEG (PAG,XDATA)
.area RSEG (ABS,DATA)
P1 = 0x90 ;p262
P2 = 0xA0 ;
P3 = 0xB0
.area CSEG (ABS,CODE)
_start:
	xrl P1, #0x80 ; xor
delay:	
	mov	R5, #0xFF
loop1:
    mov	R6, #0xFF       
loop2:  
    djnz  R6, loop2    
    djnz  R5 , loop1
	ljmp _start

DJNZ命令を使うことで短くできます。

書き込みにはWCHISPStudio_V360を使いました。

上記と同様に設定してDownloadを押すと書き込まれて黄色のLEDが点滅しました。

タイトルとURLをコピーしました