赤道儀のコントローラーについて

赤道儀のコントローラーをマイコンを使って自作回路で制御するようになったのは2013年3月のこと。

少しづつ改良を加えてきましたが基本は当時と変わっていません


ここでは極軸=赤経軸の駆動プログラムについて説明します

赤緯軸に関しては「バックラッシュを少なくするプログラム」で説明しています


主な仕様は

マイコンはPIC16F648A

12Vの電源でステッピングモータを駆動

回路の電源はレギュレーターで5Vに減圧して使う

マイコンは20MHzの水晶発振器を使って動作させる

ステッピングモーターは1-2相励磁駆動方式

オートガイドに対応

オートガイド時の駆動スピードを調整可能


回路についてはまた後日に


PICのプログラムはC言語でも書くことができるのですが

より単純なアセンブリ言語を使って書きました

モーターの回転といった単純な動作にはピッタリです

特に、プログラムなど勉強をしたことのない私にとって比較的ハードルは低かったです

ステッピングモーターを回すというのはマイコンのプログラムの基本でもあるので

いろいろな作例がネットで公開されているので参考にさせていただきました


まず「1-2相励磁駆動」について具体的に示しますと

1000

1100

0100

0110

0010

0011

0001

1001

(1がON,0がOFF)

という信号をマイコンから発信させて

MOSFETというトランジスターの仲間によってモーターの12Vの電源を制御します


例えば私の場合はモーターの駆動に合わせてLEDを発行させているので

2進法で8桁、16進法で2桁の数字をプログラムに書き込みます

「10001000」という信号を出力するには

MOVLW 88h 

MOVWF PORTB

とします (16進法の「88h」は2進法「1000 1000」です)

PORTのRB7~0にそれぞれ

RB7=1 RB6=0 RB65=0 RB4=0

RB3=1 RB2=0 RB21=0 RB0=0

が出力されます


この1、0の出力を順序だてて出力させればモーターが回転することになります


 STEP1 ;(ここでは私がモータの第一段階をSTEP1と名付けました)

  MOVLW 88h ;(88=1000 1000、hは16進法を表しています)

  MOVWF PORTB ;(ポートBから信号を発信)

 STEP2

  MOVLW 0Ch ;(0C=0000 1100)

  MOVWF PORTB

 STEP3

  MOVLW 84h ;(84=1000 0100)

  MOVWF PORTB

 STEP4

  MOVLW 06h ;(06=0000 0110)

  MOVWF PORTB

 STEP5

  MOVLW 82h ;(82=1000 0010)

  MOVWF PORTB

 STEP6

  MOVLW 03h 

  MOVWF PORTB

 STEP7

  MOVLW 81h 

  MOVWF PORTB

 STEP8

  MOVLW 09h 

  MOVWF PORTB

  GOTO STEP1


これで8段階のモーターのステップが繰り返されてLEDは点滅を繰り返すことになります


でも、このままではモーターのスピードは極限になってしまいます

そこで待ち時間を作ります


私の場合各ステップごとに例えば CALL T318

のように時間を待つプログラムを呼び出す形にしてあります



MOVLW 88h ;(88=1000 1000、hは16進法を表しています)

MOVWF PORTB ;(ポートBから信号を発信)

CALL T318  ;(318サイクル待つサブルーチンなのでT318と名付けました)

MOVLW 0Ch ;(0C=0000 1100)

MOVWF PORTB

CALL T318 ;(T318を呼び出して実行します)


    ; 318サイクル待つサブルーチン

 T318

  MOVLW 069h ; (069hは16進法で105)

  MOVWF GPR_3 ; (ループ回数として105をメモリのGPR_3セット)

  T318LP DECFSZ GPR_3,F ; (ループ回数が105になったら次の命令をスキップ)

  GOTO T318LP

  RETURN ; (このサブルーチン呼出し元に戻る)


のようにです

この待ち時間を作るプログラムは

PICで遊ぶ電子工作」さんを参考にさせていただきました


待ち時間は318のように短いサイクルから259,376サイクルという長いものまで様々作りました

   「サイクル」というのはプログラム一言語を実行する時間のことで、

   「1サイクル」は「4クロック」=0.2μ秒

   20MHzで動作させる場合5MHzで命令が実行されることになります




つぎに、オートガイドの機能です

RA0,RA1,に接続されたオートガイダーからの信号をモーターの1ステップごとにごとに確認します


BTFSC PORTA,0 ;(RA0が0だったら次の命令をスキップ)

GOTO NFSTAR1 ;(RA0が1だったので NFSTARに飛ぶ)

BTFSC PORTA,1 ;(RA1が0だったら次の命令をスキップ)

GOTO NLSTAR2 ;(RA1が1だったので NLSTARに飛ぶ)

という具合です

NFSTARというのはモーターの回転速度を増すように待ち時間を調整したサブルーチンで

NLSTARは遅くするサブルーチンにしてあります 

(NFSTAR、NLSTARも私が名付けたサブルーチンの名前です)


   ところで、オートガイドのST-4という規格は駆動を修正する信号は「0(OFF)」

   通常駆動は「1(ON)」となっていて

   私のプログラムとは正反対になっています

   これについては回路に関する記事で説明しますが

   私のプログラムを参考になさる場合は注意なさってください


こうしてできたモーターのステップ一回はこのようになります


  MOVLW 88h ;(88=1000 1000、hは16進法を表しています)

  MOVWF PORTB ;(ポートBから信号を発信)

  BTFSC PORTA,1 ;(RA1が0だったら次の命令をスキップ)

  GOTO NFSTAR1 ;(RA0が1だったので NFSTARに飛ぶ)

  BTFSC PORTA,0 ;(RA0が0だったら次の命令をスキップ)

  GOTO NLSTAR2 ;(RA1が1だったので NFSTARに飛ぶ)

  CALL T318




次にオートガイドの信号を受けた先のサブルーチンですが


モーター1ステップでこのようになっています


NFSTAR1 MOVLW 88h 

MOVWF PORTB

CALL FSEL

BTFSS PORTA,1 

GOTO STEP2 ;(信号が無くなったら通常駆動に戻る)


このサブルーチンで工夫した点は

直接待ち時間をここで設定するのではなく

一度別のFSEL(私が名付けた)というサブルーチンを呼び出す点です

私のコントローラーには2進法で4桁のスイッチがついています

そのスイッチのオンオフをマイコンが判断して

待ち時間を選ぶということをしています

スイッチの設定で赤道儀の修正速度を変えることができます


下の桁から

0か1かを判断して

次に

00、10、01、11

次に

000、100、010、110、101、001、011、111

次に

0000、1000、0100、1100、0010、1010、0110、1110、

0101、1101、0001、1001、0011、1011、0111、1111

という具合に最終的に16種類の待ち時間を呼び出すようにしました


速度を遅くするサブルーチンも同じ仕組みで作りました



私のプログラムは命令を実行するサイクルと待ち時間を組み合わせることで

恒星日=86,164.09秒を正確に再現しました

オートガイドを使うので駆動の修正がなされるのでキングスレートではなく恒星日を採用しました

GP赤道儀のモーターを1-2相駆動させるとモーターの軸は通常の倍、96ステップで1回転します

ギア比1/120のギアがついていて、ワームホイールは144歯があります

なので 96×120×144=1,658,880ステップで極軸が1回転します

1秒間のステップ数は太陽日=24時間の場合

     1,658,880 ÷ 86,400秒 =19.2 回

恒星日=86164.09秒では

     19.25256798145… 回

となります

PICを20MHzで動作させたときの1つの命令にかかる時間(1サイクル)は0.2μ秒です。

そこから導き出されるモーターの1ステップは

     1 ÷ 19.25256798145… ÷ 0.2μ秒=259,705.614586…サイクルになります

小数点以下のサイクルは再現できないので259,705+5/8としました(5/8は0.625)

具体的には

       MOVLW 88h

      MOVWF PORTB

      CALL T259376

      CALL T318

      BTFSC PORTA,0

      GOTO NFSTAR2

      BTFSC PORTA,1

      GOTO NLSTAR2

      NOP

CALLは2サイクルの命令なので

このプログラムを実行すると11サイクル

そして259,376サイクルを待つサブルーチンと

318サイクル待つサブルーチンを加えると

合計259705サイクルとなります

これに、さらに「NOP(何もしないという命令)」を一つ加えると

259,706サイクルになります

1-2相の8ステップのうち259,705サイクルを3回、259706サイクルを5回とすれば

8ステップの平均が259,705+5/8となります。

1ステップあたりの誤差は0.0104サイクル 0.00208μ秒

計算上は1日に0.0035秒の誤差となります(1か月で約1秒の誤差)


以上が私が作り現在ビクセンのGP2、SP赤道儀で使用しているコントローラーの概要です

クオーツ時計の駆動精度とST-4互換のオートガイダーで正確なガイドが可能になっています


回路についてはこちら 赤経軸の駆動に関してはこちら



プログラムを掲載しておきます


; 赤道儀コントローラー赤緯軸1-2相励磁駆動PIC16F648A VR2020/08 BY STARRYZOBI 

; CLOCK 20.000MHz

; このバージョンでは恒星追尾に対して1.1倍速から2.6倍速および0.91倍から0.38倍速を16段階で駆動を選択できる。

;オートガイダーの+RAは18番ピン(RA1)、-RAは17番ピン(RA0)に接続する

; 0 = 1.1 & 0.91

; 1 = 1.2 & 0.83

; 2 = 1.3 & 0.77

; 3 = 1.4 & 0.71

; 4 = 1.5 & 0.67

; 5 = 1.6 & 0.625

; 6 = 1.7 & 0.59

; 7 = 1.8 & 0.56

; 8 = 1.9 & 0.53

; 9 = 2.0 & 0.5

; 10 = 2.1 & 0.48

; 11 = 2.2 & 0.455

; 12 = 2.3 & 0.435

; 13 = 2.4 & 0.417

; 14 = 2.5 & 0.4

; 15 = 2.6 & 0.385

LIST P=PIC16F648A ;

INCLUDE P16F648A.INC ;

__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _BODEN_ON & _LVP_OFF & _MCLRE_OFF

GPR_1 EQU 020h ; GPRの1バイト目にGPR_1と言う名前を付ける

GPR_2 EQU 021h ; GPRの2バイト目にGPR_2と言う名前を付ける

GPR_3 EQU 021h

GPR_4 EQU 022h

GPR_5 EQU 022h

GPR_6 EQU 025h

GPR_7 EQU 026h

GPR_8 EQU 027h

GPR_9 EQU 028h

GPR_10 EQU 029h

GPR_11 EQU 02Ah

GPR_12 EQU 02Bh

GPR_13 EQU 02Ch

GPR_14 EQU 02Dh

GPR_15 EQU 02Eh

GPR_16 EQU 02Fh

GPR_17 EQU 030h

GPR_18 EQU 031h

GPR_19 EQU 032h

GPR_20 EQU 033h

GPR_21 EQU 034h

GPR_22 EQU 035h

GPR_23 EQU 036h

GPR_24 EQU 037h

GPR_25 EQU 038h

GPR_26 EQU 039h

GPR_27 EQU 03Ah

GPR_28 EQU 03Bh

ORG 0 ; リセットベクタを指定する。

INIT

; << PICの初期化 >>

CLRF PORTA

MOVLW 07h

MOVWF CMCON ; PORTAはI/Oデジタル

; < I/O方向定義>

BSF STATUS,RP0 ; バンク1へ切り替え

MOVLW 0FFh

MOVWF TRISA ; PORTAは全て入力

CLRF TRISB ; ファイルレジスタTRISBをクリア(0) → PORTBは全て出力

BCF STATUS,RP0 ; STATUSのRP0をクリア(0) → バンク0

; <<北天星追尾 >>

NSTAR1 MOVLW 88h

MOVWF PORTB

CALL T259376

CALL T318

BTFSC PORTA,1

GOTO NFSTAR2

BTFSC PORTA,0

GOTO NLSTAR2

NOP  ; 1-2相の8ステップのうち259705サイクルを3回

NSTAR2 MOVLW 8Ch

MOVWF PORTB

CALL T259376

CALL T318

BTFSC PORTA,1

GOTO NFSTAR3

BTFSC PORTA,0

GOTO NLSTAR3

NOP

NOP  ; 1-2相の8ステップのうち259706サイクルを5回

NSTAR3 MOVLW 84h

MOVWF PORTB

CALL T259376

CALL T318

BTFSC PORTA,1

GOTO NFSTAR4

BTFSC PORTA,0

GOTO NLSTAR4

NOP

NOP  ; 259706サイクルを5回

NSTAR4 MOVLW 86h

MOVWF PORTB

CALL T259376

CALL T318

BTFSC PORTA,1

GOTO NFSTAR5

BTFSC PORTA,0

GOTO NLSTAR5

NOP  ; 259705サイクル3回

NSTAR5 MOVLW 02h

MOVWF PORTB

CALL T259376

CALL T318

BTFSC PORTA,1

GOTO NFSTAR6

BTFSC PORTA,0

GOTO NLSTAR6

NOP

NOP  ; 259706サイクルを5回

NSTAR6 MOVLW 03h

MOVWF PORTB

CALL T259376

CALL T318

BTFSC PORTA,1

GOTO NFSTAR7

BTFSC PORTA,0

GOTO NLSTAR7

NOP

NOP  ; 259706サイクルを5回

NSTAR7 MOVLW 01h

MOVWF PORTB

CALL T259376

CALL T318

BTFSC PORTA,1

GOTO NFSTAR8

BTFSC PORTA,0

GOTO NLSTAR8

NOP  ; 259705サイクルを3回

NSTAR8 MOVLW 09h

MOVWF PORTB

CALL T259376

CALL T318

BTFSC PORTA,1

GOTO NFSTAR1

BTFSC PORTA,0

GOTO NLSTAR1

GOTO NSTAR1  ; 259706サイクルを5回(GOTOは2サイクルの命令)

; <<北天星追尾速度アップ >>

NFSTAR1 MOVLW 88h

MOVWF PORTB

CALL FSEL

BTFSS PORTA,1

GOTO NSTAR2

NFSTAR2 MOVLW 8Ch

MOVWF PORTB

CALL FSEL

BTFSS PORTA,1

GOTO NSTAR3

NFSTAR3 MOVLW 44h

MOVWF PORTB

CALL FSEL

BTFSS PORTA,1

GOTO NSTAR4

NFSTAR4 MOVLW 46h

MOVWF PORTB

CALL FSEL

BTFSS PORTA,1

GOTO NSTAR5

NFSTAR5 MOVLW 22h

MOVWF PORTB

CALL FSEL

BTFSS PORTA,1

GOTO NSTAR6

NFSTAR6 MOVLW 23h

MOVWF PORTB

CALL FSEL

BTFSS PORTA,1

GOTO NSTAR7

NFSTAR7 MOVLW 11h

MOVWF PORTB

CALL FSEL

BTFSS PORTA,1

GOTO NSTAR8

NFSTAR8 MOVLW 19h

MOVWF PORTB

CALL FSEL

BTFSS PORTA,1

GOTO NSTAR1

GOTO NFSTAR1

; <<北天星追尾速度ダウン >>

NLSTAR1 MOVLW 88h

MOVWF PORTB

CALL LSEL

BTFSS PORTA,0

GOTO NSTAR2

NLSTAR2 MOVLW 8Ch

MOVWF PORTB

CALL LSEL

BTFSS PORTA,0

GOTO NSTAR3

NLSTAR3 MOVLW 44h

MOVWF PORTB

CALL LSEL

BTFSS PORTA,0

GOTO NSTAR4

NLSTAR4 MOVLW 46h

MOVWF PORTB

CALL LSEL

BTFSS PORTA,0

GOTO NSTAR5

NLSTAR5 MOVLW 22h

MOVWF PORTB

CALL LSEL

BTFSS PORTA,0

GOTO NSTAR6

NLSTAR6 MOVLW 23h

MOVWF PORTB

CALL LSEL

BTFSS PORTA,0

GOTO NSTAR7

NLSTAR7 MOVLW 11h

MOVWF PORTB

CALL LSEL

BTFSS PORTA,0

GOTO NSTAR8

NLSTAR8 MOVLW 19h

MOVWF PORTB

CALL LSEL

BTFSS PORTA,0

GOTO NSTAR1

GOTO NLSTAR1

   ; <<北天星追尾速度アップ速度選択 >>

FSEL BTFSC PORTA,2

CALL SELxxx1 ; xxx1

BTFSC PORTA,2

RETURN

CALL SELxxx0 ; xxx0

RETURN

SELxxx1 BTFSC PORTA,3 ; xxx1

CALL SELxx11 ; xx11

BTFSC PORTA,3

RETURN

CALL SELxx01 ; xx01

RETURN

SELxxx0 BTFSC PORTA,3 ; xxx0

CALL SELxx10 ; xx10

BTFSC PORTA,3

RETURN

CALL SELxx00 ; xx 00

RETURN

SELxx01 BTFSC PORTA,4 ; xx01

CALL SELx101 ; x101

BTFSC PORTA,4

RETURN

CALL SELx001 ; x001

RETURN

SELxx00 BTFSC PORTA,4 ; xx00

CALL SELx100 ; x100

BTFSC PORTA,4

RETURN

CALL SELx000 ; x000

RETURN

SELxx11 BTFSC PORTA,4 ; xx11

CALL SELx111 ; x111

BTFSC PORTA,4

RETURN

CALL SELx011 ; x011

RETURN

SELxx10 BTFSC PORTA,4 ; xx10

CALL SELx110 ; x110

BTFSC PORTA,4

RETURN

CALL SELx010 ; x010

RETURN

SELx010 BTFSC PORTA,5 ; x010

CALL T21 ; 1010=10

BTFSC PORTA,5

RETURN

CALL T13 ; 0010=2

RETURN

SELx110 BTFSC PORTA,5 ; x110

CALL T25 ; 1110=14

BTFSC PORTA,5

RETURN

CALL T17 ; 0110=6

RETURN

SELx000 BTFSC PORTA,5 ; x000

CALL T19 ; 1000=8

BTFSC PORTA,5

RETURN

CALL T11 ; 0000=0

RETURN

SELx011 BTFSC PORTA,5 ; x011

CALL T22 ; 1011=11

BTFSC PORTA,5

RETURN

CALL T14 ; 0011=3

RETURN

SELx100 BTFSC PORTA,5 ; x100

CALL T23 ; 1100=12

BTFSC PORTA,5

RETURN

CALL T15 ; 0100=4

RETURN

SELx111 BTFSC PORTA,5 ; x111

CALL T26 ; 1111=15

BTFSC PORTA,5

RETURN

CALL T18 ; 0111=7

RETURN

SELx001 BTFSC PORTA,5 ; x001

CALL T20 ; 1001=9

BTFSC PORTA,5

RETURN

CALL T12 ; 0001=1

RETURN

SELx101 BTFSC PORTA,5 ; x101

CALL T24 ; 1101=13

BTFSC PORTA,5

RETURN

CALL T16 ; 0101=5

RETURN

; <<北天星追尾速度ダウン速度選択 >>

LSEL BTFSC PORTA,2

CALL LSELxxx1 ; xxx1

BTFSC PORTA,2

RETURN

CALL LSELxxx0 ; xxx0

RETURN

LSELxxx1 BTFSC PORTA,3 ; xxx1

CALL LSELxx11 ; xx11

BTFSC PORTA,3

RETURN

CALL LSELxx01 ; xx01

RETURN

LSELxxx0 BTFSC PORTA,3 ; xxx0

CALL LSELxx10 ; xx10

BTFSC PORTA,3

RETURN

CALL LSELxx00 ; xx00

RETURN

LSELxx01 BTFSC PORTA,4 ; xx01

CALL LSELx101 ; x101

BTFSC PORTA,4

RETURN

CALL LSELx001 ; x001

RETURN

LSELxx00 BTFSC PORTA,4 ; xx00

CALL LSELx100 ; x100

BTFSC PORTA,4

RETURN

CALL LSELx000 ; x000

RETURN

LSELxx11 BTFSC PORTA,4 ; xx11

CALL LSELx111 ; x111

BTFSC PORTA,4

RETURN

CALL LSELx011 ; x011

RETURN

LSELxx10 BTFSC PORTA,4 ; xx10

CALL LSELx110 ; x110

BTFSC PORTA,4

RETURN

CALL LSELx010 ; x010

RETURN

LSELx010 BTFSC PORTA,5 ; x010

CALL LT21 ; 1010=10

BTFSC PORTA,5

RETURN

CALL LT13 ; 0010=2

RETURN

LSELx110 BTFSC PORTA,5 ; x110

CALL LT25 ; 1110=14

BTFSC PORTA,5

RETURN

CALL LT17 ; 0110=6

RETURN

LSELx000 BTFSC PORTA,5 ; x000

CALL LT19 ; 1000=8

BTFSC PORTA,5

RETURN

CALL LT11 ; 0000=0

RETURN

LSELx011 BTFSC PORTA,5 ; x011

CALL LT22 ; 1011=11

BTFSC PORTA,5

RETURN

CALL LT14 ; 0011=3

RETURN

LSELx100 BTFSC PORTA,5 ; x100

CALL LT23 ; 1100=12

BTFSC PORTA,5

RETURN

CALL LT15 ; 0100=4

RETURN

LSELx111 BTFSC PORTA,5 ; x111

CALL LT26 ; 1111=15

BTFSC PORTA,5

RETURN

CALL LT18 ; 0111=7

RETURN

LSELx001 BTFSC PORTA,5 ; x001

CALL LT20 ; 1001=9

BTFSC PORTA,5

RETURN

CALL LT12 ; 0001=1

RETURN

LSELx101 BTFSC PORTA,5 ; x101

CALL LT24 ; 1101=13

BTFSC PORTA,5

RETURN

CALL LT16 ; 0101=5

RETURN

; << 259376サイクル待つルーチン >>

T259376 MOVLW 0CFh ; CFh=207

MOVWF GPR_1 ; (ループ回数として207をセット)

T5296LP CALL T1248S ;

DECFSZ GPR_1,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T5296LP

NOP

NOP ;

RETURN ; このサブルーチン呼出し元に戻る

; <<1248サイクル待つサブルーチン >>

T1248S MOVLW 0F9h ; F9h=249

MOVWF GPR_2 ; (ループ回数として249をセット)

T1248LP NOP

NOP ; 何もせず1サイクル消費

DECFSZ GPR_2,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T1248LP

RETURN ; このサブルーチン呼出し元に戻る

; <<318サイクル待つサブルーチン >>

T318 MOVLW 069h ; 69h=105

MOVWF GPR_3 ; (ループ回数として105をセット)

T318LP DECFSZ GPR_3,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T318LP

RETURN ; このサブルーチン呼出し元に戻る

; << 236820サイクル待つルーチン=1.1 >>

T11 MOVLW 0BDh ; BD=189

MOVWF GPR_4 ; (ループ回数として189をセット)

T11LP CALL T1248S ;

DECFSZ GPR_4,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T11LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 216772サイクル待つルーチン=1.2 >>

T12 MOVLW 0ADh ; AD=173

MOVWF GPR_5 ; (ループ回数として173をセット)

T12LP CALL T1248S ;

DECFSZ GPR_5,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T12LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 200483サイクル待つルーチン=1.3 >>

T13 MOVLW 0A0h ; 0A0=160

MOVWF GPR_6 ; (ループ回数として160をセット)

T13LP CALL T1248S ;

DECFSZ GPR_6,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T13LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 185447サイクル待つルーチン=1.4 >>

T14 MOVLW 94h ; 94=148

MOVWF GPR_7 ; (ループ回数として148をセット)

T14LP CALL T1248S ;

DECFSZ GPR_7,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T14LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 172917サイクル待つルーチン=1.5 >>

T15 MOVLW 8Ah ; 8A=138

MOVWF GPR_8 ; (ループ回数として139をセット)

T15LP CALL T1248S ;

DECFSZ GPR_8,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T15LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 161960サイクル待つルーチン=1.6 >>

T16 MOVLW 82h ; 82=130

MOVWF GPR_9 ; (ループ回数として130をセット)

T16LP CALL T1248S ;

DECFSZ GPR_9,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T16LP ;

CALL T318

RETURN ; このサブルーチン呼出し元に戻る

; << 152869サイクル待つルーチン=1.7 >>

T17 MOVLW 7Ah ; 7A=122

MOVWF GPR_10 ; (ループ回数として122をセット)

T17LP CALL T1248S ;

DECFSZ GPR_10,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T17LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 144098サイクル待つルーチン=1.8 >>

T18 MOVLW 73h ; 73=115

MOVWF GPR_11 ; (ループ回数として115をセット)

T18LP CALL T1248S ;

DECFSZ GPR_11,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T18LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 135327サイクル待つルーチン=1.9 >>

T19 MOVLW 6Ch ; 6C=107

MOVWF GPR_12 ; (ループ回数として107をセット)

T19LP CALL T1248S ;

DECFSZ GPR_12,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T19LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 130315サイクル待つルーチン=2.0 >>

T20 MOVLW 68h ; 68=104

MOVWF GPR_13 ; (ループ回数として104をセット)

T20LP CALL T1248S ;

DECFSZ GPR_13,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T20LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 124050サイクル待つルーチン=2.1 >>

T21 MOVLW 63h ; 63=99

MOVWF GPR_14 ; (ループ回数として99をセット)

T21LP CALL T1248S ;

DECFSZ GPR_14,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T21LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 117785サイクル待つルーチン=2.2 >>

T22 MOVLW 5Eh ; 5E=94

MOVWF GPR_15 ; (ループ回数として94をセット)

T22LP CALL T1248S ;

DECFSZ GPR_15,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T22LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 112773サイクル待つルーチン=2.3 >>

T23 MOVLW 5Ah ; 5A=90

MOVWF GPR_16 ; (ループ回数として90をセット)

T23LP CALL T1248S ;

DECFSZ GPR_16,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T23LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 107761サイクル待つルーチン=2.4 >>

T24 MOVLW 56h ; 56=86

MOVWF GPR_17 ; (ループ回数として86をセット)

T24LP CALL T1248S ;

DECFSZ GPR_17,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T24LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 104002サイクル待つルーチン=2.5 >>

T25 MOVLW 53h ; 53=83

MOVWF GPR_18 ; (ループ回数として83をセット)

T25LP CALL T1248S ;

DECFSZ GPR_18,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T25LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 100243サイクル待つルーチン=2.6 >>

T26 MOVLW 50h ; 50=80

MOVWF GPR_19 ; (ループ回数として80をセット)

T26LP CALL T1248S ;

DECFSZ GPR_19,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO T26LP ;

RETURN ; このサブルーチン呼出し元に戻る

; << 285694サイクル待つルーチン >>

LT11 MOVLW 15h ; =21

MOVWF GPR_20 ; (ループ回数として21をセット)

LT11LP CALL T1248S ;

DECFSZ GPR_20,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO LT11LP ;

CALL T259376

RETURN ; このサブルーチン呼出し元に戻る

; << 312007サイクル待つルーチン >>

LT12 MOVLW 2Ah ; =42

MOVWF GPR_21 ; (ループ回数として42をセット)

LT12LP CALL T1248S ;

DECFSZ GPR_21,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO LT12LP ;

CALL T259376

RETURN ; このサブルーチン呼出し元に戻る

; << 337067サイクル待つルーチン >>

LT13 MOVLW 3Eh ; =62

MOVWF GPR_22 ; (ループ回数として62をセット)

LT13LP CALL T1248S ;

DECFSZ GPR_22,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO LT13LP ;

CALL T259376

RETURN ; このサブルーチン呼出し元に戻る

; << +104002サイクル待つルーチン >>

LT14 MOVLW 53h ; =83

MOVWF GPR_23 ; (ループ回数として83をセット)

LT14LP CALL T1248S ;

DECFSZ GPR_23,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO LT14LP ;

CALL T259376

RETURN ; このサブルーチン呼出し元に戻る

; << +129062サイクル待つルーチン >>

LT15 MOVLW 67h ; =103

MOVWF GPR_24 ; (ループ回数として103をセット)

LT15LP CALL T1248S ;

DECFSZ GPR_24,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO LT15LP ;

CALL T259376

RETURN ; このサブルーチン呼出し元に戻る

; << +155375サイクル待つルーチン >>

LT16 MOVLW 07Ch ; =124

MOVWF GPR_25 ; (ループ回数として124をセット)

LT16LP CALL T1248S ;

DECFSZ GPR_25,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO LT16LP ;

CALL T259376

RETURN ; このサブルーチン呼出し元に戻る

; << +181688サイクル待つルーチン >>

LT17 MOVLW 91h ; =145

MOVWF GPR_26 ; (ループ回数として145をセット)

LT17LP CALL T1248S ;

DECFSZ GPR_26,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO LT17LP ;

CALL T259376

RETURN ; このサブルーチン呼出し元に戻る

; << +208001サイクル待つルーチン >>

LT18 MOVLW 0A6h ; =166

MOVWF GPR_27 ; (ループ回数として166をセット)

LT18LP CALL T1248S ;

DECFSZ GPR_27,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO LT18LP ;

CALL T259376

RETURN ; このサブルーチン呼出し元に戻る

; << +233061サイクル待つルーチン >>

LT19 MOVLW 0BAh ; =186

MOVWF GPR_28 ; (ループ回数として186をセット)

LT19LP CALL T1248S ;

DECFSZ GPR_28,F ; ループ回数?1して0になったら次の命令をスキップ

GOTO LT19LP ;

CALL T259376

RETURN ; このサブルーチン呼出し元に戻る

; << +259376サイクル待つルーチン >>

LT20 CALL T259376

CALL T259376

RETURN ; このサブルーチン呼出し元に戻る

; << 545076サイクル待つルーチン >>

LT21 CALL T259376

CALL LT11

RETURN ; このサブルーチン呼出し元に戻る

; << 571389サイクル待つルーチン >>

LT22 CALL T259376

CALL LT12

RETURN ; このサブルーチン呼出し元に戻る

; << +337065サイクル待つルーチン >>

LT23 CALL T259376

CALL LT13

RETURN ; このサブルーチン呼出し元に戻る

; << +363378サイクル待つルーチン >>

LT24 CALL T259376

CALL LT14

RETURN ; このサブルーチン呼出し元に戻る

; << +388438サイクル待つルーチン >>

LT25 CALL T259376

CALL LT15

RETURN ; このサブルーチン呼出し元に戻る

; << +414751サイクル待つルーチン >>

LT26 CALL T259376

CALL LT16

RETURN ; このサブルーチン呼出し元に戻る

END





















満天の星空

星空の画像、主に中望遠レンズでの星雲星団の画像を公開します。 機材の改造やカスタマイズについても載せていきたいと思います。