PET/CE機(GE社製Discovery-ST-Elite16) (とやまPET画像診断センターWebページより) |
【開発中のmicroBASICの画面】 |
#include "pic.h" __CONFIG(UNPROTECT & BORDIS & MCLRDIS & PWRTEN & WDTDIS & INTIO); main() { OSCCAL = _READ_OSCCAL_DATA(); // 無くてもよい GPIO = 0x00; // ポートの初期化 TRISIO = 0b00011000; // GP3,4ピンを入力に ANSEL = 0x00; // アナログは使わない CMCON = 0x07; // コンパレータも使わない WPU = 0b00011000; // GP4ピンをプルアップ GPPU = 0; // プルアップを使用 while(1){ if(GPIO4=0){ // P4が0なら GPIO5=0; // LEDを点灯 }else{ // P4が0でなければ GPIO5=1; // LED消灯 } } }
1 processor 12F675 2 opt pw 79 3 psect text0,local,class=CODE,delta=2 4 psect config,global,class=CONFIG,delta=2 5 psect text1,local,class=CODE,delta=2 6 0000 7 0000 8 0000 9 0000 10 0000 11 0000 12 0000 13 0000 14 0000 15 0000 ;# 16 17 psect text0 18 03E6 _main 19 ;pic675hc.c: 5: main() 20 03E6 1283 bcf 3,5 21 03E7 23FF call 1023 22 03E8 1683 bsf 3,5 23 03E9 0090 movwf 16 24 ;pic675hc.c: 8: GPIO=0x00; 25 03EA 1283 bcf 3,5 26 03EB 0185 clrf 5 ;volatile 27 ;pic675hc.c: 9: TRISIO=0b00011000; 28 03EC 3018 movlw 24 29 03ED 1683 bsf 3,5 30 03EE 0085 movwf 5 31 ;pic675hc.c: 10: ANSEL=0x00; 32 03EF 019F clrf 31 33 ;pic675hc.c: 11: CMCON=0x07; 34 03F0 3007 movlw 7 35 03F1 1283 bcf 3,5 36 03F2 0099 movwf 25 ;volatile 37 ;pic675hc.c: 12: WPU=0b0011000; 38 03F3 3018 movlw 24 39 03F4 1683 bsf 3,5 40 03F5 0095 movwf 21 41 ;pic675hc.c: 13: GPPU=0; 42 03F6 1381 bcf 1,7 43 03F7 l3 44 ;pic675hc.c: 14: while(1){ 45 ;pic675hc.c: 15: if(GPIO4=0){ 46 03F7 1283 bcf 3,5 47 03F8 1205 bcf 5,4 48 03F9 1E05 btfss 5,4 49 03FA 2BFD goto l5 50 ;pic675hc.c: 16: GPIO5=0; 51 03FB 1285 bcf 5,5 52 ;pic675hc.c: 17: }else{ 53 03FC 2BF7 goto l3 54 03FD l5 55 ;pic675hc.c: 18: GPIO5=1; 56 03FD 1685 bsf 5,5 57 03FE 2BF7 goto l3 58 59 psect config 60 2007 3F84 dw 16260 ;#
program LedTest main: CMCON = %00000111 ' コンパレータを使わない TRISIO = %00011000 ' GP3,4を入力に ANSEL = 0 ' アナログ入力は使わない WPU = %00011000 ' GP3,5をプルアップ OPTION_REG.7 = 0 ' プルアップを使う mLoop: IF GPIO.4 = 0 then ' GP4が0(スイッチが押されている)なら GPIO.5 = 0 ' GP5をL(LED点灯) else ' でなければ GPIO.5 = 1 ' GP5をH(LED消灯) end if goto mLoop ' Loopに戻り繰り返す。 end.
; ADDRESS OPCODE ASM ; ---------------------------------------------- $0000 $2804 GOTO _main $0004 $ _main: ;LedTest.pbas,4 :: main: $0004 $ _main_main: ;LedTest.pbas,5 :: CMCON = %00000111 $0004 $3007 MOVLW 7 $0005 $1303 BCF STATUS, RP1 $0006 $1283 BCF STATUS, RP0 $0007 $0099 MOVWF CMCON ;LedTest.pbas,6 :: TRISIO = %00011000 $0008 $3018 MOVLW 24 $0009 $1683 BSF STATUS, RP0 $000A $0085 MOVWF TRISIO ;LedTest.pbas,7 :: ANSEL = 0 $000B $019F CLRF ANSEL, 1 ;LedTest.pbas,8 :: WPU = %00011000 $000C $3018 MOVLW 24 $000D $0095 MOVWF WPU ;LedTest.pbas,9 :: OPTION_REG.7 = 0 $000E $1381 BCF OPTION_REG, 7 $000F $ LedTest_L_2: ;LedTest.pbas,10 :: mLoop: $000F $ _main_mloop: ;LedTest.pbas,11 :: IF GPIO.4=0 then $000F $3000 MOVLW 0 $0010 $1283 BCF STATUS, RP0 $0011 $1A05 BTFSC GPIO, 4 $0012 $3001 MOVLW 1 $0013 $00D1 MOVWF STACK_1 $0014 $0851 MOVF STACK_1, 0 $0015 $3A00 XORLW 0 $0016 $1D03 BTFSS STATUS, Z $0017 $281A GOTO LedTest_L_4 $0018 $ LedTest_L_3: ;LedTest.pbas,12 :: GPIO.5=0 $0018 $1285 BCF GPIO, 5 $0019 $ LedTest_L_7: $0019 $281B GOTO LedTest_L_5 ;LedTest.pbas,13 :: else $001A $ LedTest_L_4: ;LedTest.pbas,14 :: GPIO.5=1 $001A $ LedTest_L_8: $001A $1685 BSF GPIO, 5 $001B $ LedTest_L_9: ;LedTest.pbas,15 :: end if $001B $ LedTest_L_5: ;LedTest.pbas,16 :: goto mLoop $001B $280F GOTO _main_mloop $001C $281C GOTO $