そして、アセンブラです
素人の動作確認用のアセンブラですから、まあ、参考程度に! 雨降って寒いです。
OSC内臓だし、AD付きだし、遊ぶのには面白いPICですね! アンテナSD330のコントローラSDC-1でモータコントロールをPWM制御できれば、CRなしで回路を組めるとな
しかし、 はじめての×× って本(××=PIC)は、初めてでは解らない! 本当に解らない 周りに聞く人もいないし!(愚痴)
アセンブラです
;list p=12F683
INCLUDE "p12F683.inc"
__config _BOD_ON & _WDT_OFF & _MCLRE_OFF & _INTOSCIO
ORG 00h
;******
T1 EQU 020h
T2 EQU T1+1
T3 EQU T2+1
M1 EQU T3+1
M2 EQU M1+1
M3 EQU M2+1
;*****************************************
;AD変換付きに飛ぶ ここの飛び先で動作を代えています
; GOTO ADC ;AD変換テスト用
GOTO ADCSWOUT ;ADシリアル出力
; GOTO PWMADC ;PWMADCAD変換PWM動作に飛ぶ
; GOTO AD0145 ;GIPO3=0 01=01/45=23 GIPO3=1 01=45/45=67
;
;*******************
;**********************
;LEDチカチカ PICテスト用
BCF STATUS, RP0
CLRF GPIO
MOVLW H'07'
MOVWF CMCON0
BSF STATUS,RP0
CLRF ANSEL
MOVLW B'101000'
MOVWF TRISIO
BCF STATUS,RP0
;***************************************** ;
; GOTO ADCSWOUT1
LOOP
BTFSC GPIO,5
GOTO LOOP2
BSF GPIO,2
GOTO LOOP3
LOOP2
BCF GPIO,2
LOOP3
BSF GPIO,4
CALL TIM20uS
BCF GPIO,4
GOTO LOOP
;*****************************************
ADC
CALL ADCSET
CALL ADLOOP
CALL TIM01
GOTO $-2
;AD変換付き GP2がアナログ入力
;Initialize
ADCSET
MOVLW b'00000111' ;コンパレータモード OFF
MOVWF CMCON0
BSF STATUS,RP0 ;バンク1へ
MOVLW b'00001100' ;GP2、GP3を入力設定
MOVWF TRISIO
MOVLW b'10000000' ;プルアップ無し
MOVWF OPTION_REG
MOVLW b'00000000' ;割り込み設定無効
MOVWF IOC
MOVLW b'00000000' ;プルアップ無効
MOVWF WPU
MOVWF b'01110000' ;OSC=8MHZ
MOVWF OSCCON
MOVLW b'01010100' ;AD変換速度とAD入力端子 ANS2設定
MOVWF ANSEL
BCF STATUS,RP0 ;バンク0へ
MOVLW b'00001000' ;GP2=AN2 ADFM=left
MOVWF ADCON0
BCF INTCON,GPIF
RETURN
;**************************************
;AD変換
ADLOOP
BSF ADCON0,ADON
CALL TIM20uS
BSF ADCON0,GO
BTFSC ADCON0,GO
GOTO $-1
MOVFW ADRESH
MOVWF M1
RETURN
;****************************************
;データ出力 GP4スタートビット、GP1クロック+データ
ADCSWOUT
CALL ADCSET
ADCSWOUT1
CALL ADLOOP
; MOVLW b'10111011'
; MOVWF M1
startt
BCF GPIO,4
BCF GPIO,0
CALL TIM20uS
BSF GPIO,4
CALL TIM20uS
BCF GPIO,4
CALL TIM20uS
T10
CALL SHIFT
T11
CALL SHIFT
T12
CALL SHIFT
T13
CALL SHIFT
T14
CALL SHIFT
T15
CALL SHIFT
T16
CALL SHIFT
T17
CALL SHIFT
GOTO ADCSWOUT1
;*************************************
SHIFT
BSF GPIO,0
CALL TIM20uS
BCF GPIO,0
MOVF M1,W
ANDLW b'00000001'
; MOVWF M1
MOVWF GPIO
CALL TIM20uS
BCF GPIO,0
RRF M1,1
CALL TIM20uS
RETURN
;*************************************
;PWMADC
PWMADC
CALL ADCSET
PWMLOOP
BSF GPIO,1
BSF GPIO,0
CALL ADLOOP
CLRF M2
PWMLOOP1
; CALL TIM02
DECF M2,1
DECFSZ M1,1
GOTO PWMLOOP1
BCF GPIO,0
BCF GPIO,1
PWMLOOP2
; CALL TIM02
DECFSZ M2,1
GOTO PWMLOOP2
GOTO PWMLOOP
;*************************************
AD0145 ;GIPO3=0 01=01/45=23 GIPO3=1 01=45/45=67
AD0145SET
CALL ADCSET
AD0145OUT1
CALL ADLOOP
BTFSC GPIO,3
GOTO AD0145OUT3
AD0145OUT2
CLRF GPIO
MOVF M1,W
ANDLW b'00000011'
MOVWF GPIO
RLF M1,1
RLF M1,0
ANDLW b'00110000'
IORWF GPIO,1
GOTO AD0145OUT1
AD0145OUT3
CLRF GPIO
SWAPF M1,1
GOTO AD0145OUT2
;***************************************
TIM20uS
; MOVLW D'1'
; MOVWF T1
;TIMLOOP1
; DECFSZ T1,F
; GOTO TIMLOOP1
NOP
NOP
RETURN
;********************************************
TIM01
BSF GPIO,4
DECFSZ T1,F
GOTO TIM01
BCF GPIO,4
RETURN
;**********************************************
TIM02
MOVLW H'01'
MOVWF T1
DECFSZ T1,F
GOTO $-1
RETURN
END