![]() |
| 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 $
![]() |
![]() |
![]() |