@.CharSet=CP1251
@GNU AS

@ +----------------------------------------------------------------------------+
@ |         Пример подключения дисплея LCD 5110 (на Philips PCD8544)           |
@ |                                 к STM32F100                                |
@ +----------------------------------------------------------------------------+
@ | Передача данных на дисплей может быть осуществлена двумя способами:        |
@ | - hard SPI - модуль PREIPH / SPI / SPI_TX с задействованием хардварного    |
@ |              SPI микроконтроллера (на выбор SPI1 / SPI2                    |
@ | - Soft SPI - модуль PERIPH / SPI / SOFT_SPI - с программно реализованым    |
@ |              протоколом SPI                                                |
@ |                                                                            |
@ | модуль реализующий функции LCD: devices\pcd8544\lcd5510.asm                |
@ | в модуле определяется подключение сигналов RST, DC(A0), CS(CSE)            |
@ |                                                                            |
@ | определение пинов передачи данных SCK (CLK), DIN (MOSI) происходит в соот- |
@ | ветствующем модуле SPI в  periph \ spi                                     |
@ | - spi_tx.asm                                                               |
@ | или                                                                        |
@ | - soft_spi.asm                                                             |
@ |                                                                            |
@ +----------------------------------------------------------------------------+
@ | Процедуры реализованные в lcd5110.asm:                                     |
@ |                                                                            |
@ | LCD5110_INIT - инициализация дисплея, модуль вызывает инициализацию SPI    |
@ |                                                                            |
@ | LCD5110_REFRESH - отправка изображения с буфера экрана на дисплей          |
@ |                                                                            |
@ | LCD5110_CLEAR   - очистка буфера дисплея                                   |
@ |                                                                            |
@ | LCD5110_PIXEL - рисование точки                                            |
@ |                                                                            |
@ | LCD5110_CHAR  - вывод символа                                              |
@ |                                                                            |
@ +----------------------------------------------------------------------------+

.syntax unified     @ синтаксис исходного кода
.thumb              @ тип используемых инструкций Thumb
.cpu cortex-m3      @ процессор


.section .asmcode

@ основная программа
.global Start
Start:              @ поместите код своей программы ниже

                    BL         SYSCLK24        @ настройка тактирования на 24 мгц

                    BL         LCD5110_Init    @ инициализация дисплея

                    BL         LCD5110_CLEAR   @ очистить буфер экрана


                    @ вывод линии Y=12, X=20..63
                    MOV        R0, 12
                    MOV        R1, 20

loop:               BL         LCD5110_PIXEL
                    ADD        R1, R1, 1
                    CMP        R1, 63
                    BNE        loop

                    @ вывод букв с пиксельным позиционированием
                    MOV        R0, 24
                    MOV        R1, 30
                    MOV        R2, 0
                    MOV r3, '0'
                    BL LCD5110_CHAR

                    MOV        R0, 25
                    MOV        R1, 37
                    MOV        R2, 1
                    MOV r3, '1'
                    BL LCD5110_CHAR

                    MOV        R0, 26
                    MOV        R1, 46
                    MOV        R2, 0
                    MOV r3, '2'
                    BL LCD5110_CHAR

                    MOV        R0, 27
                    MOV        R1, 57
                    MOV        R2, 1
                    MOV r3, '3'
                    BL LCD5110_CHAR

                    MOV        R0, 28
                    MOV        R1, 72
                    MOV        R2, 0
                    MOV r3, '4'
                    BL LCD5110_CHAR

                    BL         LCD5110_REFRESH    @ обновить изображение на экране

MAIN_LOOP:          B          MAIN_LOOP



