番外 LPC1114FN28/102 アセンブラサンプル
LPC1114FN28/102(ARM Cortex-M0) も安く出回っているので、Cortex-M0のアセンブラプログラムを試してみました。
開発環境: トラ技ARMライタ+LPCXpresso IDE
LPCXpresso IDEのLPC1114用サンプルを参考にアセンブラのサンプルプログラムを作成しましたのでご紹介します。
LPC1114FN28/102はフラッシュの容量が32kと大きいので、アセンブラでプログラムする人はいないと思われますが...
サンプルプログラムは以下の4つです。
LEDのブリンキングプログラム(LEDはPIO0_2に接続しています。)
USARTのエコープログラム
フラッシュメモリーのダンププログラム
ブートROMのダンププログラム
[LPC810との相違点]
1.I/Oの設定でペリフェラルレジスタの名称と役割が異なります。
LPC1114にSET0、CLR0、NOT0レジスタは存在しない。
2.USARTの設定でペリフェラルレジスタの名称と役割が異なります。
LPC1114にスイッチマトリクスは存在しないので、シリアルポートの構成は画一的になります。
(このため回路図は省きます。)
LEDのブリンキングプログラムは以下のようになります。
.syntax unified
.cpu cortex-m0
.align 2
.thumb
.thumb_func
.section .isr_vector @Vector table definition
.long 0x10001000 @ 0000:StackTop
.long 1+main @ 0004:Reset_Handler
.long 1+main @ 0008:NMI_Handler
.
.
.
.long 1+main @ 00B0:PIO INT3_IRQHandler
.long 1+main @ 00B4:PIO INT2_IRQHandler
.long 1+main @ 00B8:PIO INT1_IRQHandler
.long 1+main @ 00BC:PIO INT0_IRQHandler
.text
.equ LED ,2 @ LED = PORT0,2
.equ GPIO0DIR ,0x50008000 @ Direction Registers port 0
.equ GPIO0DATA ,0x50003FFC @ GPIO toggle port 0 register
.equ DELAY ,0x00200000 @ Toggle time
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@
@ Blink LED on PORT0,2 use(r0,r1,r2)
@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
main:
movs r1,#(1<<LED) @r1 = (1<<LED)
ldr r2,=#GPIO0DIR @r2 = GPIO0DIR
ldr r0,[r2,#0] @GPIO0DIR |= (1<<LED)
orrs r0,r0,r1
str r0,[r2,#0]
ldr r2,=#GPIO0DATA @r2 = GPIO0DATA
loop:
ldr r0,[r2,#0] @Toggle LED
eors r0,r0,r1
str r0,[r2,#0]
delay:
ldr r0,=#DELAY
dloop:
subs r0,r0,#0x01
bne dloop
b loop
<HEX>
:1000000000100010C1000000C1000000C10000008D
:1000100000000000000000000000000000000000E0
:10002000000000000000000000000000C10000000F
:100030000000000000000000C1000000C10000003E
:10004000C1000000C1000000C1000000C1000000AC
:10005000C1000000C1000000C1000000C10000009C
:10006000C1000000C1000000C1000000C10000008C
:10007000C1000000C1000000C1000000C10000007C
:10008000C1000000C1000000C1000000C10000006C
:10009000C1000000C10000000000000000000000DE
:1000A000C1000000C1000000C1000000000000000D
:1000B000C1000000C1000000C1000000C10000003C
:1000C0000421064A106808431060054A1068484039
:1000D000106004480138FDD1F8E7000000800050AE
:0800E000FC3F0050000020006D
:00000001FF
<使ってみて、雑感>
LPC1114FN28/102はシリアルポートが1組で、TX、RXとして使用するPINが固定されるため、
LPC810のように新たにブートローダーを仕込むメリットがありません。
更にフラッシュ消去もLPC810と異なりセクタ(4kbyte)単位となりますので、
このこともブートローダーやEEPROMエミュレーションを行う上での障害となります。
同じLPC1114でもページ書き込み出来るものもあるようですが....
個人的にはRAMの容量がそこそこあるので、10bitA/Dと組み合わせた3chデータロガーなんていいなと思っています。
ソース一式のダウンロード先
http://hp.vector.co.jp/authors/VA058115/
https://drive.google.com/file/d/1D8lAre5RwjpSgGA4PAAkLt-_EPqLIKOV/view?usp=drivesdk
ダウンロードしたZIPファイルは圧縮プロジェクトとしてLPCXpressoからインポートすることが可能です。
.
開発環境: トラ技ARMライタ+LPCXpresso IDE
LPCXpresso IDEのLPC1114用サンプルを参考にアセンブラのサンプルプログラムを作成しましたのでご紹介します。
LPC1114FN28/102はフラッシュの容量が32kと大きいので、アセンブラでプログラムする人はいないと思われますが...
サンプルプログラムは以下の4つです。
LEDのブリンキングプログラム(LEDはPIO0_2に接続しています。)
USARTのエコープログラム
フラッシュメモリーのダンププログラム
ブートROMのダンププログラム
[LPC810との相違点]
1.I/Oの設定でペリフェラルレジスタの名称と役割が異なります。
LPC1114にSET0、CLR0、NOT0レジスタは存在しない。
2.USARTの設定でペリフェラルレジスタの名称と役割が異なります。
LPC1114にスイッチマトリクスは存在しないので、シリアルポートの構成は画一的になります。
(このため回路図は省きます。)
LEDのブリンキングプログラムは以下のようになります。
.syntax unified
.cpu cortex-m0
.align 2
.thumb
.thumb_func
.section .isr_vector @Vector table definition
.long 0x10001000 @ 0000:StackTop
.long 1+main @ 0004:Reset_Handler
.long 1+main @ 0008:NMI_Handler
.
.
.
.long 1+main @ 00B0:PIO INT3_IRQHandler
.long 1+main @ 00B4:PIO INT2_IRQHandler
.long 1+main @ 00B8:PIO INT1_IRQHandler
.long 1+main @ 00BC:PIO INT0_IRQHandler
.text
.equ LED ,2 @ LED = PORT0,2
.equ GPIO0DIR ,0x50008000 @ Direction Registers port 0
.equ GPIO0DATA ,0x50003FFC @ GPIO toggle port 0 register
.equ DELAY ,0x00200000 @ Toggle time
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@
@ Blink LED on PORT0,2 use(r0,r1,r2)
@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
main:
movs r1,#(1<<LED) @r1 = (1<<LED)
ldr r2,=#GPIO0DIR @r2 = GPIO0DIR
ldr r0,[r2,#0] @GPIO0DIR |= (1<<LED)
orrs r0,r0,r1
str r0,[r2,#0]
ldr r2,=#GPIO0DATA @r2 = GPIO0DATA
loop:
ldr r0,[r2,#0] @Toggle LED
eors r0,r0,r1
str r0,[r2,#0]
delay:
ldr r0,=#DELAY
dloop:
subs r0,r0,#0x01
bne dloop
b loop
<HEX>
:1000000000100010C1000000C1000000C10000008D
:1000100000000000000000000000000000000000E0
:10002000000000000000000000000000C10000000F
:100030000000000000000000C1000000C10000003E
:10004000C1000000C1000000C1000000C1000000AC
:10005000C1000000C1000000C1000000C10000009C
:10006000C1000000C1000000C1000000C10000008C
:10007000C1000000C1000000C1000000C10000007C
:10008000C1000000C1000000C1000000C10000006C
:10009000C1000000C10000000000000000000000DE
:1000A000C1000000C1000000C1000000000000000D
:1000B000C1000000C1000000C1000000C10000003C
:1000C0000421064A106808431060054A1068484039
:1000D000106004480138FDD1F8E7000000800050AE
:0800E000FC3F0050000020006D
:00000001FF
<使ってみて、雑感>
LPC1114FN28/102はシリアルポートが1組で、TX、RXとして使用するPINが固定されるため、
LPC810のように新たにブートローダーを仕込むメリットがありません。
更にフラッシュ消去もLPC810と異なりセクタ(4kbyte)単位となりますので、
このこともブートローダーやEEPROMエミュレーションを行う上での障害となります。
同じLPC1114でもページ書き込み出来るものもあるようですが....
個人的にはRAMの容量がそこそこあるので、10bitA/Dと組み合わせた3chデータロガーなんていいなと思っています。
ソース一式のダウンロード先
Bequest333のページ(別館)
https://drive.google.com/file/d/1D8lAre5RwjpSgGA4PAAkLt-_EPqLIKOV/view?usp=drivesdk
ダウンロードしたZIPファイルは圧縮プロジェクトとしてLPCXpressoからインポートすることが可能です。
.
- ご質問などはこちらからどうぞ
- ページ更新情報
- 最近嬉しかったこと
- 1kワードのTINYBASIC STM32L010F4
- やってくれたな!!店長よ
- 東大版TINYBASIC (STM32)
- 1kワードのTINYBASIC STM32版 その2
- 1kワードのTINYBASIC STM32版 その1
- 1kワードのTINYBASIC その8
- 1kワードのTINYBASIC その7
- 1kワードのTINYBASIC その6
- 1kワードのTINYBASIC その5
- 1kワードのTINYBASIC その4
- 1kワードのTINYBASIC その3
- 1kワードのTINYBASIC その2
- 1kワードのTINYBASIC その1
- 電大版TINYBASIC for PIC ミニマムお試し版5
- 電大版TINYBASIC for PIC ミニマムお試し版4
- 電大版TINYBASIC for PIC ミニマムお試し版3
- 電大版TINYBASIC for PIC ミニマムお試し版2
- 電大版TINYBASIC for PIC ミニマムお試し版
- PICで電大版TINYBASIC 実装編その5
- PICで電大版TINYBASIC 実装編その4
- PICで電大版TINYBASIC 実装編その3
- PICで電大版TINYBASIC 実装編その2
- PICで電大版TINYBASIC 実装編その1
- PICで電大版TINYBASIC 準備編その2
- PICで電大版TINYBASIC 準備編その1
- PIC18F24K42をPICKIT2で焼くTIPS その2
- PIC18F24K42をPICKIT2で焼くTIPS
- PIC16F18313ブートローダー書き込み器の製作
- PIC16F18857をPICKIT2で焼くその2
- PIC16F18857をPICKIT2で焼く
- PIC16F18313をPICKIT2で焼くその2
- PIC16F18313をPICKIT2で焼く
- PIC16F5XX USBIO
- HVT-BT200の予約制御
- 再考 PIC16F57 USBIO
- PIC16F5X USBIO
- 続12 8ピンPICでUSB PIC16F18313 HID-シリアルアダプター
- ucontrol.com.arに接続できない
- 続続 LPC1114 USBブートローダー
- 続PIC10F200 電子サイコロ
- PIC10F200 電子サイコロ
- LPC1114 8ch簡易ロジックアナライザー USB版
- 続 LPC1114 USBブートローダー
- LPC1114 8ch簡易ロジックアナライザー
- LPC1114 USBブートローダー
- LPC1114でUSB
- 続LPC810でUSB
- LPC810でUSB
- USB_NCO
- USB出力の周波数カウンター
- HIDアダプターについてのまとめ その2
- HIDアダプターについてのまとめ
- 極小ブートローダー まとめ
- 極小ブートローダー ATTiny 其の2
- 極小ブートローダー PIC10F322 其の6
- 極小ブートローダー PIC10F322 其の5
- 極小ブートローダー PIC10F322 其の4
- 極小ブートローダー PIC10F322 其の3
- 極小ブートローダー ATTiny13A
- 極小ブートローダー PIC10F322 其の2
- 極小ブートローダー PIC10F322
- 続11 8ピンPICでUSB PIC16F57_USBIO (その3)
- 続10 8ピンPICでUSB PIC16F505_USBIO (その2)
- 続9 8ピンPICでUSB PIC16F57_USBIO (その2)
- 続8 8ピンPICでUSB PIC16F505_USBIO
- 続7 8ピンPICでUSB PIC16F57_USBIO
- 続6 8ピンPICでUSB PIC16F570_USBIO
- 続5 8ピンPICでUSB PIC12F615_USBIO
- 続4 8ピンPICでUSB 16FUSBの改良版
- 続続続8ピンPICでUSB -30MHz+ソフトシリアル-
- 続続8ピンPICでUSB -16FUSBを30MHzで動かす-
- 続8ピンPICでUSB -ターミナルソフトからの操作-
- 8ピンPICでUSB -16FUSBの移植-
- 番外 MSP430 タイニーブートローダー
- 番外 C8051 タイニーブートローダー
- 続続続 Tiny AVR/PIC Bootloader+
- 続続 Tiny AVR/PIC Bootloader+
- 続 Tiny AVR/PIC Bootloader+
- Tiny AVR/PIC Bootloader+
- 番外 続ATTINY13A OSCCAL の簡易校正
- 番外 ATTINY13A OSCCAL の簡易校正
- 番外 続ATTINY13A ソフトシリアル
- 番外 ATTINY13A ソフトシリアル
- 番外 続Arduinoからタイニーブートローダーを使用する
- 番外 Arduinoからタイニーブートローダーを使用する
- 番外 LPC1114FN28/102 アセンブラサンプル
- 番外 LPC810 タイニーブートローダーの自己書き換え
- 番外 LPC810 EEPROM エミュレーション
- 番外 LPC810 タイニーブートローダー
- 番外 LPC810でアセンブラ
- 続続続PIC10F322 ソフトシリアル一考察
- 続続PIC10F322 ソフトシリアル一考察
- 続PIC10F322 ソフトシリアル一考察
- PIC10F322 ソフトシリアル一考察
- 84ワードのPICブートローダー
- 続PIC10F322 Ring-DDS
- Tinybldの自己更新プログラム
- プログラム領域をROMのように使う
- PIC10F322 256ビットプログラム発振器
- PIC18F EEPROM エミュレーション Jタイプ
- PIC18F EEPROM エミュレーション
- PIC16F EEPROM エミュレーション
- PIC10F322専用 周波数カウンター
- PIC18F Jタイプ ブートローダー
- PICの制約を取り除く
- 番外 ATTINY2313A用ブートローダー
- 続番外 ATTINY13A用ブートローダー
- 番外 ATTINY13A用ブートローダー
- 続PIC10F322 フラッシュメモリの操作
- PIC10F322 フラッシュメモリの操作
- PIC10F322 PIC_WAIT
- ビット列の並び替え その2
- ビット列の並び替え その1
- 故障した温水便座を使えるようにする
- PIC10F322 RA3を出力ポートとして使用
- PIC10F322 周波数カウンタ Part2
- PIC10F322 AN592準拠 周波数カウンタ
- PIC10F322 Ring-DDS
- microchipのAN592に関する一考察
- PIC10F322 3-ch リモコンライン切り替え器
- PIC10F322 4-SW リモコン送信器
- PIC10F322 二相発振器
- PIC_DELAY
- 続PIC_WAIT
- PIC_WAIT
- ご質問などはこちらからどうぞ
- ページ更新情報
- 最近嬉しかったこと
- 1kワードのTINYBASIC STM32L010F4
- やってくれたな!!店長よ
- 東大版TINYBASIC (STM32)
- 1kワードのTINYBASIC STM32版 その2
- 1kワードのTINYBASIC STM32版 その1
- 1kワードのTINYBASIC その8
- 1kワードのTINYBASIC その7
- 1kワードのTINYBASIC その6
- 1kワードのTINYBASIC その5
- 1kワードのTINYBASIC その4
- 1kワードのTINYBASIC その3
- 1kワードのTINYBASIC その2
- 1kワードのTINYBASIC その1
- 電大版TINYBASIC for PIC ミニマムお試し版5
- 電大版TINYBASIC for PIC ミニマムお試し版4
- 電大版TINYBASIC for PIC ミニマムお試し版3
- 電大版TINYBASIC for PIC ミニマムお試し版2
- 電大版TINYBASIC for PIC ミニマムお試し版
- PICで電大版TINYBASIC 実装編その5
- PICで電大版TINYBASIC 実装編その4
- PICで電大版TINYBASIC 実装編その3
- PICで電大版TINYBASIC 実装編その2
- PICで電大版TINYBASIC 実装編その1
- PICで電大版TINYBASIC 準備編その2
- PICで電大版TINYBASIC 準備編その1
- PIC18F24K42をPICKIT2で焼くTIPS その2
- PIC18F24K42をPICKIT2で焼くTIPS
- PIC16F18313ブートローダー書き込み器の製作
- PIC16F18857をPICKIT2で焼くその2
- PIC16F18857をPICKIT2で焼く
- PIC16F18313をPICKIT2で焼くその2
- PIC16F18313をPICKIT2で焼く
- PIC16F5XX USBIO
- HVT-BT200の予約制御
- 再考 PIC16F57 USBIO
- PIC16F5X USBIO
- 続12 8ピンPICでUSB PIC16F18313 HID-シリアルアダプター
- ucontrol.com.arに接続できない
- 続続 LPC1114 USBブートローダー
- 続PIC10F200 電子サイコロ
- PIC10F200 電子サイコロ
- LPC1114 8ch簡易ロジックアナライザー USB版
- 続 LPC1114 USBブートローダー
- LPC1114 8ch簡易ロジックアナライザー
- LPC1114 USBブートローダー
- LPC1114でUSB
- 続LPC810でUSB
- LPC810でUSB
- USB_NCO
- USB出力の周波数カウンター
- HIDアダプターについてのまとめ その2
- HIDアダプターについてのまとめ
- 極小ブートローダー まとめ
- 極小ブートローダー ATTiny 其の2
- 極小ブートローダー PIC10F322 其の6
- 極小ブートローダー PIC10F322 其の5
- 極小ブートローダー PIC10F322 其の4
- 極小ブートローダー PIC10F322 其の3
- 極小ブートローダー ATTiny13A
- 極小ブートローダー PIC10F322 其の2
- 極小ブートローダー PIC10F322
- 続11 8ピンPICでUSB PIC16F57_USBIO (その3)
- 続10 8ピンPICでUSB PIC16F505_USBIO (その2)
- 続9 8ピンPICでUSB PIC16F57_USBIO (その2)
- 続8 8ピンPICでUSB PIC16F505_USBIO
- 続7 8ピンPICでUSB PIC16F57_USBIO
- 続6 8ピンPICでUSB PIC16F570_USBIO
- 続5 8ピンPICでUSB PIC12F615_USBIO
- 続4 8ピンPICでUSB 16FUSBの改良版
- 続続続8ピンPICでUSB -30MHz+ソフトシリアル-
- 続続8ピンPICでUSB -16FUSBを30MHzで動かす-
- 続8ピンPICでUSB -ターミナルソフトからの操作-
- 8ピンPICでUSB -16FUSBの移植-
- 番外 MSP430 タイニーブートローダー
- 番外 C8051 タイニーブートローダー
- 続続続 Tiny AVR/PIC Bootloader+
- 続続 Tiny AVR/PIC Bootloader+
- 続 Tiny AVR/PIC Bootloader+
- Tiny AVR/PIC Bootloader+
- 番外 続ATTINY13A OSCCAL の簡易校正
- 番外 ATTINY13A OSCCAL の簡易校正
- 番外 続ATTINY13A ソフトシリアル
- 番外 ATTINY13A ソフトシリアル
- 番外 続Arduinoからタイニーブートローダーを使用する
- 番外 Arduinoからタイニーブートローダーを使用する
- 番外 LPC1114FN28/102 アセンブラサンプル
- 番外 LPC810 タイニーブートローダーの自己書き換え
- 番外 LPC810 EEPROM エミュレーション
- 番外 LPC810 タイニーブートローダー
- 番外 LPC810でアセンブラ
- 続続続PIC10F322 ソフトシリアル一考察
- 続続PIC10F322 ソフトシリアル一考察
- 続PIC10F322 ソフトシリアル一考察
- PIC10F322 ソフトシリアル一考察
- 84ワードのPICブートローダー
- 続PIC10F322 Ring-DDS
- Tinybldの自己更新プログラム
- プログラム領域をROMのように使う
- PIC10F322 256ビットプログラム発振器
- PIC18F EEPROM エミュレーション Jタイプ
- PIC18F EEPROM エミュレーション
- PIC16F EEPROM エミュレーション
- PIC10F322専用 周波数カウンター
- PIC18F Jタイプ ブートローダー
- PICの制約を取り除く
- 番外 ATTINY2313A用ブートローダー
- 続番外 ATTINY13A用ブートローダー
- 番外 ATTINY13A用ブートローダー
- 続PIC10F322 フラッシュメモリの操作
- PIC10F322 フラッシュメモリの操作
- PIC10F322 PIC_WAIT
- ビット列の並び替え その2
- ビット列の並び替え その1
- 故障した温水便座を使えるようにする
- PIC10F322 RA3を出力ポートとして使用
- PIC10F322 周波数カウンタ Part2
- PIC10F322 AN592準拠 周波数カウンタ
- PIC10F322 Ring-DDS
- microchipのAN592に関する一考察
- PIC10F322 3-ch リモコンライン切り替え器
- PIC10F322 4-SW リモコン送信器
- PIC10F322 二相発振器
- PIC_DELAY
- 続PIC_WAIT
- PIC_WAIT