BANK1 MOVLW b' ' PIC16F648A独自 MOVWF CMCON コンパレータ OFF BCF INTCON,PEIE 周辺割り込み OFF PIC16F648A独自 MOVLW B' ' RB2/TX, RB1/RX PIC16F648A独自 MOVW

Similar documents
スライド 1

PowerPoint プレゼンテーション

スライド 1

スライド 1

untitled

3 1EEPROMElectrically Erasable PROM PROMProgrammable ROM 2 EEPROM 3

Taro11-…e…L…X…g.jtd

PowerPoint プレゼンテーション

前付(念).indd

,, ( ) 5 ma ( ) 5V V 5 6 A B C D E F G H I J , LED LED, LED, 7 LED,, 7 LED ( ) V LED VCC 5V 7 LED VCC f g f a g b a b c e d e d c dp dp VCC (

スライド 1

1.1 ラベル ラベルはカラム 1 から始まらなければならない ラベルの後にはコロン スペース タブ 改行が続いてよい ラベルはアルファベットかアンダーバーで始まり 英数字 アンダーバー クエスチョンマークを含んでよい ラベルは 32 文字までである デフォルトではこれらは大文字と小文字を区別するが

untitled

Microsoft PowerPoint - 工学ゼミⅢLED1回_2018

Microsoft Word - 4章.doc

3 4 PIC

スライド 1

も 常に 2 つのコイルに電圧を印加する 2 層励磁方式や 1 つのコイルと 2 つのコイルに交互に電圧を印 2

PIC18 Istructios PIC16, PIC x Microchip Techology Icorporated. All Rights Reserved. PICmicro PIC18 52

PIC (, 2, 3 ) PIC ( 1, 2, 3 ) 1 2 (, 2 ) PIC ( 1, 2 ) 2.1 (p.34) define #define (define ) (p.61) 1 30 (RD 7 /P SP 7 ) 32 (V DD ) IC

1. 購入物品リスト 電子部品名 用途 規格 単価 数量 合計 購入先 PIC16F84A-20/P PIC16F 秋月電子通商 カーボン抵抗 1/4W R0,R1 10kΩ 秋月電子通商 カーボン抵抗 1/4W R2,R2 追加分 300Ω 秋月

BSF PORTA BCF PORTA MOVLWB MOVLWB MOVLWB MOVLWB , E=1, E=0 8 ビット 行表示 ディスプレイ制御 表示クリア エントリーモード CALLDSP MAIN BCF PORTA,3 R

USB モジュール

実習内容 PIC18C242 のポート B に接続した LED を点滅させます ( 他の実習と同じ内容です ) 8 個の LED に表示される値が +3 ずつインクリメントします MPLAB を使って MPASM アセンブラのソース ファイルをアセンブルします MPLAB とソース ファイルは配布し

Microsoft PowerPoint - 第8α章.ppt [互換モード]

Microsoft Word - 工学ゼミ3_テキスト

余白 : 上下 25.4mm, 左右 19mm (Word2012 での やや狭い 設定 ) マイコンプログラミング演習 I レポート 1 実験日 提出日 回路構築 /LED を用いた I/O 制御 [16pt] 班員と担当責任者第 0 班レポート作成

卒 業 研 究 報 告

また RLF 命令は 図 2 示す様に RRF 命令とは逆に 各ビットを一つずつ 左方向に回転 ( ローテイト ) する命令である 8 ビット変数のアドレスを A とし C フラグに 0 を代入してから RLF A,1 を実行すると 変数の内容が 左に 1 ビットシフトし 最下位ビット (LSB)

Microsoft Word - 組込みプログラミング2018テキスト

2. アーキテクチャ 概 要 PIC16F8x ファミリは 命 令 語 長 14bit の RISC[1]で 命 令 は35 種 類 である 1 命 令 は4クロックで 実 行 されるが 実 際 にはパイプライン 処 理 [2]されている ノイマン 型 コンピュータ[3]と 違 いプログラムとデータ

PowerPoint プレゼンテーション

スライド 1

回路 : Vdd GND 回路図と呼べるようなものではありません オシレータは外部 ( セラミック発振子 ) なので GP4 と GP5 は使えません 四角の枠内はモジュールなので ここから VDD GND TX RX の4 本をつなぐだけです 測定端子 (GP0) は 1MΩの抵抗と 2MΩの半固

Microsoft Word - 工学ゼミ3_テキスト

Microsoft Word - テキスト.docx

正転時とは反対に回転する これが逆転である 図 2(d) の様に 4 つのスイッチ全てが OFF の場合 DC モータには電流が流れず 停止する ただし 元々 DC モータが回転していた場合は 惰性でしばらく回転を続ける 図 2(e) の様に SW2 と SW4 を ON SW1 と SW3 を O

CoIDE 用 STM32F4_UART2 の説明 V /03/30 STM32F4 Discovery の非同期シリアル通信ポート UART2 の送受信を行うプログラムです Free の開発ツール CoIDE で作成したプロジェクトサンプルです プログラムの開始番地は 0x08000

64 松尾邦昭 2. 無線送受信装置 SANWA 製のラジコン送受信装置は, その機能性の豊富さと価格の安さを理由に多くのラジコン ファンに愛用されており, 今回使用した VG6000は, チャンネル数が6チャンネルあり, ヘリコプター制御用に設計 開発され使用されているものだが, 我々はこれをロボ

PowerPoint プレゼンテーション

DS30430C-J2-page 2 : 1998 Microchip Technology Inc.

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

DS30292A-J-page 2 Preliminary 2000 Microchip Technology Inc. PIC16F876/

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

<4D F736F F D C835E838A EA993AE90A78CE CC8A4A94AD2E646F63>

1. 使用する信号 1.1. UART 信号 UART 通信に使用する信号と接続相手との接続は以下の通りです UART 信号表 番号 CPU 機能名 CPU 信号名 基板コネクタピン番号 方向 接続相手の信号名 1 USART1_TX PA9 CN > RxD 2 USART1_R

スライド 1

81 /******************************************************************************/ 82 /* スレーブアドレスの設定 */ 83 /*****************************************

Microsoft PowerPoint - フェリカ通信仕様書_

// USB_CNC_Machine リモート PIO 端末プログラムのメイン関数およびユーザアプリ部 // 編集作成 by Takehiko Inoue /*********** メイン関数 ***************************/ #pragma code

Microsoft Word - PIC-IOアプリケーションノート.doc

序文

ex04_2012.ppt

から付与します さらに, ゼロプレッシャー ICソケットの空き部分を使って, タイマー ICである555の動作チェックができます ユニバーサル基板の一部に555 用の発振回路を構成しています 555をソケットに差し込んで電源スイッチを入れると,ICが良品の場合は LEDが点滅します LEDが点滅しな

スライド 1

#define HOUR 0x04 #define DAY 0x05 #define WEEKDAY 0x06 #define MONTH 0x07 #define YEAR 0x08 #define CKOUT 0x0D #define CTRLT 0x0E // CLKOUT // TIMER

PIC16C7X日本語データシート

DVIOUT-soturon

PowerPoint プレゼンテーション

Microsoft Word - PIC-P14マニュアル.doc

MODBUS ユーザーズマニュアル 페이지 1 / 23

回路図 部品表 部品番号 型番 個数 U PIC6F823 I/ST (TSSOP 4pin) R 00Ω (/0W, 608) R2 - R9 360Ω (/0W, 608) 8 C μf (25V, 608) LED LN56RA CN ロープロファイルピンソケット CN2 ロープロファイルピン

PowerPoint プレゼンテーション

Microsoft Word - no15.docx

スライド 1

Microsoft Word - 3new.doc

Taro-82ADAカ.jtd

1 8 Z80 Z GBA ASIC 2 WINDOWS C 1

SLCONFIG の操作 JF1PYE Ⅰ. PC と slconfig の通信設定 Ⅱ. Slconfig の操作 Ⅲ. 端末ソフトによる Command 機能 Ⅳ. slconfig 実行形式プログラムの作成 Ⅴ. 端末ソフト Tera Term のダウンロード インストー

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

ex05_2012.pptx

2016 年 8 月 第 1.0 版 ラトックシステム株式会社

#include "uart.h" // #define RTC8583 0xA0 // RTC address #define CTRL 0x00 // RTC register notation START/STOP #defin

卒 業 研 究 報 告

パラメータ表 (VEA TYPE) 設定者 System 270 件名 PWM Mode 2(1/100Hz) 日時 エンコータ なし エンコータ 有り コート No. 内 容 設定範囲 初期設定 設定値 (1) 設定値 (2) 0 1stエンコーダパルス設定 [PLS] 0~

スライド 1

Notes and Points for TMPR454 Flash memory

PIC

CommCheckerManual_Ver.1.0_.doc

スライド 1

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

スライド 1

1. 概要 CD-500/CD-500B( 以下 " 被制御機器 " とする ) に装備の REMOTE(SERIAL) 端子を使用して コンピュータなどの外部機器より被制御機器を制御することが可能です また 外部より制御を行う機器は制御機器となります 2 仕様 2-1. 電気的仕様準拠規格 :JI

Microsoft Word - プログラムをRAM.doc

スライド 1

Łñ“’‘‚2004

Taro-ファイル処理(公開版).jtd

プリント


RsMulti の取扱説明 「RS232C で直接接続する(LAN を使用しない場合)」

アナログ・接点変換器

C言語によるPIC(16F88)プログラミング実習テキスト

PowerPoint プレゼンテーション

Microsoft Word - dg_sataahciip_refdesign_jp.doc

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol

第2回

1. LCD LS027B4DH01 について LS027B4DH01 は 400dot x 240dot のグラフィック LCD です 秋月電子通商で購入できます 外形サイズ : 62.8 x x 1.53mm LCD のフレキシブルケーブルの根元の部分はちょっと力を加えただけで表示が

Transcription:

Function: PIC16F648A Tiny Monitor Processor: PIC16F648A at 20 MHz using external HS oscillator Hardware: http://www.geocities.jp/jk1brk/misc/pic/pic16f648a.pdf Filename: PicMonV6.asm Author: jk1brk Website: http://www.geocities.jp/jk1brk/ Credit: Notes: USARTによる RS232 PIC16F648A 20MHz@ 115200,8,N,1 DIP-SW 2,6,8-ON Ref. Doc.: http://ww1.microchip.com/downloads/en/appnotes/00547c.pdf Last Upadte: '0701222 File required:monmacro.inc Remarks: Copyright 2004 Tsurumi Keiichi このファイルを 'include' する時は末尾の end を削除してファイル名の拡張子を.incに 変更する PIC16F84と比較して EEROM関連のSFR レジスタの番地が異なっています BANK0 BANK1 EEDATA:9AH EEADR:9BH コマンド SRAM 読み / 書き Mwwww SRAM 0x0000~0x007f, 0x0080~0x00ff 0x0100~0x017f, 0x0180~0x01ff EEPROM 読み / 書き Ewwww EEPROM 0x0000~0x00cf(0x2100 ~0x21cf) サブルーチン実行 Gwwww SRAM ダンプ Dwwww,bb wwww=16 ビットアドレス bb= サイズ (8 ビット ) LIST P=16F648A, ST=OFF, R=DEC, F=INHX8M, N=130 Use the PIC16F648A and decimal system INCLUDE P16F648A.INC Include header file ERRORLEVEL -207,-302,-306 suppress message 207, 302, 306 from list file CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC #include <MonMacro.inc> Macroの定義 #define BANK0 #define BANK1 #define READY BCF STATUS, RP0 BSF STATUS, RP0 RXREG,0 #define ClkFreq 20000000 input clock frequency = 20 MHz #define X 115200 9600bps up to 115200bps #define baud(x) ((10*ClkFreq/(16*X))+5)/10-1 非同期 / 高速 prog_add equ 0x150 テストプログラム開始アドレス レジスタ ファイル : ワークエリア org 0x0070 レジスタ退避 wtemp res 1 W レジスタ退避 ( テストプログラム実行後の値 ) 0x70 statustemp res 1 Status レジスタ退避 ( テストプログラム実行後の値 ) 0x71 pclathtemp res 1 0x73 fsrtemp res 1 FSR レジスタ退避 ( テストプログラム実行後の値 ) 0x74 ch res 1 送信受信データ (8 ビット ) hexh res 1 16 進入出力ハイバイト 0x76 hexl res 1,, ローバイト 0x77 datatemp res 1 バイトデータ一時保管 bcnt res 1 バイト カウント ccnt res 1 コラム カウント WorkRamEnd res 0 Program Start! org 0x00 CLRF STATUS CLRF FSR GOTO INITIALIZE ISR not in use org 0x04 goto IntSvc 割込みサービス org 0x05 INITIALIZE 1

BANK1 MOVLW b'00000111' PIC16F648A独自 MOVWF CMCON コンパレータ OFF BCF INTCON,PEIE 周辺割り込み OFF PIC16F648A独自 MOVLW B'00000010' RB2/TX, RB1/RX PIC16F648A独自 MOVWF TRISB MOVLW B'00000000' PORTA Output MOVWF TRISA BANK0 MOVLW B'00000100' TX初期化 MOVWF PORTB Initialization Asynchronous Transmitter/Receiver ============================================================== BANK1 MOVLW baud(x) ((10*ClkFreq/(16*X))+5)/10-1 非同期 / 高速 MOVWF SPBRG MOVLW B'00100100' TX9 = 8ビット送信 TXEN = 送信許可 BRGH = 非同期 / 高速 MOVWF TXSTA 送信レジスタの初期設定 BANK0 MOVLW B'10010000' SPEN = シリアルポート許可 RX9 = 8ビット受信 CREN = 連続受信許可 MOVWF RCSTA 受信レジスタの初期設定 INT_UART_ERR MOVF RCREG,W ダミーリード MOVF RCSTA,W ANDLW B'00000110' BTFSS STATUS, Z GOTO INT_UART_ERR ============================================================== MOVLW B'00000000' 周辺機能の割り込みフラグビットクリア MOVWF PIR1 clrf clrf clrf statustemp pclathtemp fsrtemp ターゲットプログラム call Init ターゲットプログラムの初期化 モニタ コマンド待ち call receive 1バイト受信 ( ch= 受信データ ) 1バイト送信 RS232C 送信サブルーチン transmit BCF INTCON,GIE グローバル割込み禁止 MOVF ch,w BTFSS PIR1,TXIF GOTO $-1 MOVWF TXREG MOVWF ch BSF INTCON,GIE グローバル割込み許可 RETURN RS232C 受信サブルーチン receive BTFSS PIR1,RCIF GOTO $-1 BCF INTCON,GIE グローバル割込み禁止 MOVF RCREG,W MOVWF ch BCF PIR1,RCIF BSF INTCON,GIE グローバル割込み許可 RETURN モニタ コマンド待ち Mprompt call sendscr CR movlw '*' 2

call toupper movlw 'M' jnz Mnlpm1 goto MnMcmd 'M' ならば SRAMの読み書き Mnlpm1 movlw 'E' jnz Mnlpm2 goto MnEcmd 'E' ならば EEPROMの読み書き Mnlpm2 movlw 'G' jnz Mnlpm3 goto MnGcmd 'G' ならばサブルーチンを実行 Mnlpm3 movlw 'D' jnz Mprompt goto MnDcmd 'D' ならばメモリダンプ コマンド 'M' SRAM 読み書き スペースで変更 'Enter' で次のアドレス ' /' で前のアドレス MnMcmd call get4hex 4桁アドレス値の入力 call receive movlw 0dh 'Enter' が打たれたら実行 jnz Mprompt MnM01 call sendscr CR送信 MnM02 call send4hex アドレスの表示 16進 4桁 hexh/hexl movlw 0x20 スペース movwf FSR movf INDF,W call send2hex メモリ内容の表示 16進二桁 movlw 0dh jz MnMnx 'Enter' なら次のアドレス movlw '/' jz MnMpr '/' なら前のアドレス movlw 20h jz MnMwr スペースなら変更 内容の変更 MnMwr call get2hex 16進二桁を入力 movwf INDF MnMnx incf hexl,f アドレスをインクリメント MnMbk call sendscr goto MnM02 アドレスをデクリメント MnMpr decf hexl,f goto MnMbk コマンド 'E' EEPROMの読書き スペースで変更 'Enter' で次のアドレス ' /' で前のアドレス MnEcmd call get4hex hexh/hexlへ 4桁アドレス値の入力 call receive movlw 0dh jz MnE01 MnE01 call sendscr MnE02 call send4hex アドレスの表示 movlw 0x20 スペース call rdeedt 3

call send2hex EEPROM内容の表示 16進二桁 movlw 0dh jz MnEnx 'Enter' なら次のアドレス movlw '/' jz MnEpr '/' なら前のアドレス movlw 20h jz MnEwr スペースなら変更 MnEnx incf hexl,f アドレスをインクリメント MnEbk call sendscr goto MnE02 MnEpr decf hexl,f アドレスをデクリメント goto MnEbk EEPROM 内容の変更 for PIC16F6xxA MnEwr call get2hex 16進二桁を入力 call enabee 書き込み許可 BANK1 ページ 1 movwf EEADR BANK0 ページ 0 call wreedt 書込み call disee 書込み禁止 goto MnEnx EEPROM 一バイト リード (7 サイクル ) for PIC16F6xxA アドレスを Wレジスタに入れてコール リードデータは Wレジスタ rdeedt BANK1 ページ 1 movwf EEADR bsf EECON1,RD movf EEDATA,W BANK0 ページ 0 EEPROM 一バイト ライト for PIC16F6xxA コール時 : アドレスを EEADR, データを Wレジスタにセット 前もって enabeeを実行 終了後は diseeを実行しておく wreedt BANK1 ページ 1 movwf EEDATA movlw 0x55 movwf EECON2 movlw 0xaa movwf EECON2 bsf EECON1,WR ewrend btfsc EECON1,WR 書込み終了待ち goto ewrend bcf EECON1,EEIF BABK0 ページ 0 EEPROM 書き込み許可 enabee BANK1 ページ 1 bsf EECON1,WREN 書き込みを許可 BANK0 ページ 0 EEPROM 書込み禁止 disee BANK1 ページ 1 bcf EECON1,WREN 書込みを禁止 BANK0 ページ 0 コマンド 'G' サブルーチンを実行 MnGcmd call get4hex 16進四桁を入力 hexh, hexlに保管 movlw 0dh 'Enter' が打たれたら実行 jnz Mprompt 4

MnG01 clrf STATUS Bank 0を選択 movf fsrtemp,0 FSRレジスタを復帰 movwf FSR C:\Program Files\Microchip\PIC mechatro\picmonv6.asm call gotarget 次のアドレスを push ターケ ットアドレスへシ ャンフ サブルーチンからの復帰で次行からが実行される movwf wtemp Wレジスタ保存 movf STATUS,0 Statusレジスタをリード clrf STATUS Bank 0を選択 movwf statustemp Statusレジスタを保存 movf FSR,0 FSRレジスタをリード movwf fsrtemp FSRレジスタを保存 モニタ コマンド待ち ターゲットアドレスへジャンプ gotarget movf hexh,0 PCLATHにアドレス上位バイトをセット movwf PCLATH movf statustemp,0 Statusレジスタ復帰 Zは影響受ける movwf STATUS movf hexl,0 ターケ ットアドレス下位ハ イトを Wレジスタへ movwf PCL Wレシズタを pclに移動してターケ ットシ ャンフ コマンド 'D' SRAM ダンプ 'Dwwww,bb' wwww=16 ビットアドレス bb= バイト数 MnDcmd call get4hex helh/hexlへ 4桁アドレス値の入力 movlw '0' subwf ch,w ch - W btfsc STATUS,C skip if minus call get2hex datatempへ二桁のバイト数を入力 バイト カウント bcntへ移動 movwf bcnt MnDS02 movlw.8 コラムカウンタを 8 movwf ccnt call sendscr call send4hex アドレスの表示 MnDS01 movlw 0x20 スペース movwf FSR movf INDF,W call send2hex メモリ内容の表示 (16 進二桁 ) incf hexl,f djnz bcnt,mndscnt バイト カウントが 0ならば終了 MnDScnt djnz ccnt,mnds01 goto MnDS02 Other Subroutines 16 進二桁の入力 エコーバック付 get2hex 上位桁を一文字入力 get2hx1 call toupper 大文字に変換 call hextobin 上位桁 16進文字 ->2進 movf ch,w swapf datatemp,f rdatatempの上 4ヒ ットに 16進上位桁を保管 下位桁を一文字入力 call toupper call hextobin 下位桁 16進文字 ->2進 movf ch,w iorwf datatemp,f hexh, hexlへ 16進四桁の入力 get4hex call get2hex movwf hexh call get2hex movwf hexl 5

キャリッジリターン ラインフィードを送出 sendscr movlw 0x0d movlw 0x0a goto transmit C:\Program Files\Microchip\PIC mechatro\picmonv6.asm insecho call receive エコーバック付一文字受信 goto transmit hexh/hexlを 16進四桁で送出 send4hex movf hexh,w call send2hex 16 進二桁送出 send2hex swapf ch,f movlw 0x0f andwf ch,f call hexs1 movlw 0x0f andwf ch,f hexs1 movlw.9 ^ 0xff addwf ch,w btfsc STATUS,C goto abv9 hexs12 movlw 0x30 addwf ch,f abv9 movlw.7 addwf ch,f goto hexs12 小文字 -> 大文字変換 toupper movlw 'a' subwf ch,w ch - W btfss STATUS,C skip if plus or equal goto toup1 movlw 'a' - 'A' subwf ch,f toup1 chの 16進文字を二進数に変換 hextobin movlw '9' ^ 0xff addwf ch,w btfsc STATUS,C goto hextob2 hextob1 movlw '0' subwf ch,f hextob2 movlw.7 subwf ch,f goto hextob1 テストプログラム org prog_add テストプログラムの開始アドレス Test1 movlw.10 movwf bcnt Test2 movlw.10 addwf bcnt,f call sendscr movf 0x30,W SRAM 30H のASCII コードを TX tstlp djnz bcnt,tstlp movf 0x31,W SRAM 31Hのデータを Wに持ってリターン 6

initialize eeprom locations ORG 0x2100 DE "C","o","p","y","r","i","g","h","t"," " DE "b","y"," " DE "J","K","1","B","R","K" end 7