積みマイコンを使った簡単な電子工作として Freescale MC9RS08KA2 による電子サイコロを作りました。元ネタは noritan さんの「ルーレットKA2」です。そちらではGPIOの4ポートを使って8個のLEDを使いますが、サイコロ用には4系統7個のLEDとしました。ポートは出力固定でシンク電流での点灯のみとするため電流制限抵抗も入れています。これは2個並列点灯保護のためでもあります。下図がLED周辺の回路図ですが、図上のLEDの位置はサイコロの目の配置になっています。この色は視認性が良くなかったかも。
コードはLEDの表示定義を編集した他に、表示確定時のブザー制御を外しています。これはこの部分を通るとパターン0の表示に戻ってしまうからです。オリジナルのルーレットでも同じようになったのですが、コードを見ても何故そうなるのかわかりません。下がオリジナルとの差分です。
*** Roulette.asm.org Fri Jan 17 21:05:22 2014
--- Roulette.asm Tue Jan 21 22:10:50 2014
***************
*** 154,160 ****
RELEASE_PERIOD: equ 6 ; Period of button release.
MAX_SPEED: equ 255 ; Maximum speed of LED.
MIN_SPEED: equ 13 ; Minimum speed of LED.
! LED_AMOUNT: equ 8 ; Number of LEDs.
;**************************************************************
;
--- 154,160 ----
RELEASE_PERIOD: equ 6 ; Period of button release.
MAX_SPEED: equ 255 ; Maximum speed of LED.
MIN_SPEED: equ 13 ; Minimum speed of LED.
! LED_AMOUNT: equ 6 ; 8 ; Number of LEDs.
;**************************************************************
;
***************
*** 208,222 ****
;==============================================================
align 64
PTAD_PATTERN: ; PTAD PTADD
! fcb %00100000,%00100001 ; 0 5-0
! fcb %00000010,%00000011 ; 1 1-0
! fcb %00000001,%00000011 ; 2 0-1
! fcb %00010000,%00010010 ; 3 4-1
! fcb %00000010,%00010010 ; 4 1-4
! fcb %00100000,%00110000 ; 5 5-4
! fcb %00010000,%00110000 ; 6 4-5
! fcb %00000001,%00100001 ; 7 0-5
!
;**************************************************************
;* Macro code definition.
;**************************************************************
--- 208,228 ----
;==============================================================
align 64
PTAD_PATTERN: ; PTAD PTADD
! ; fcb %00100000,%00100001 ; 0 5-0
! ; fcb %00000010,%00000011 ; 1 1-0
! ; fcb %00000001,%00000011 ; 2 0-1
! ; fcb %00010000,%00010010 ; 3 4-1
! ; fcb %00000010,%00010010 ; 4 1-4
! ; fcb %00100000,%00110000 ; 5 5-4
! ; fcb %00010000,%00110000 ; 6 4-5
! ; fcb %00000001,%00100001 ; 7 0-5
! ;
! fcb %00110010,%00110011 ; 1 0
! fcb %00110001,%00110011 ; 2 1
! fcb %00110000,%00110011 ; 3 0,1
! fcb %00100001,%00110011 ; 4 1,4
! fcb %00100000,%00110011 ; 5 0,1,4
! fcb %00000001,%00110011 ; 6 1,4,5
;**************************************************************
;* Macro code definition.
;**************************************************************
***************
*** 443,449 ****
;= disable_mtim();
;==============================================================
stop_init:
! mov #%00000000,PTAD
mov #%00110011,PTADD
enable_kbi
disable_rti
--- 449,455 ----
;= disable_mtim();
;==============================================================
stop_init:
! mov #%00110011,PTAD ; #%00000000,PTAD
mov #%00110011,PTADD
enable_kbi
disable_rti
***************
*** 631,636 ****
--- 637,644 ----
disable_kbi
enable_mtim
enable_rti
+ bra epilogue_done
+ ;
mov #HIGH_6_13(FANFARE),sound_page
lda led_index
beq set_sound
***************
*** 670,676 ****
incx
bra epilogue_loop
! epilogue_done:
jmp prologue_loop
;-----------------------------------------------------
--- 678,684 ----
incx
bra epilogue_loop
! epilogue_done:
jmp prologue_loop
;-----------------------------------------------------
8 pin DIP な 32 bit ARM マイコンが登場した昨今ですが、このようなローエンド 8 bit マイコンの場は価格を無視すれば超低消費電力用途向けに限られていくかも知れません。アマチュアが少数だけ使う分にはチップの価格差は気にならないですしね。
Posted by masato at 10:20 PMおそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。