21.02.2018, 22:14
|
#11
|
Прописка
Регистрация: 19.02.2008
Адрес: г. Иркутск
Сообщений: 276
Сказал спасибо: 216
Сказали Спасибо 166 раз(а) в 78 сообщении(ях)
|
Re: Вывод данных на индикатор с аналогового порта
Сообщение от DmitriyVDN
|
чушь.
|
Да и регистр PCL не может быть больше 255.
Последний раз редактировалось andron007; 21.02.2018 в 22:21.
|
|
|
|
21.02.2018, 22:38
|
#12
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,033
Сказал спасибо: 2,559
Сказали Спасибо 11,881 раз(а) в 5,958 сообщении(ях)
|
Re: Вывод данных на индикатор с аналогового порта
Сообщение от Rovi
|
Начал с ассемблера, чтобы конкретней разобраться
|
"И как Кадиллак от кашля помогает?!"(из рекламы)
Скорее, "чтобы побольше запутаться" и попреодолевать лишние трудности.
Цель - "садо-мазо" или постановка контроллеров себе на службу?
Займитесь лучше алгоритмом, а не борьбой с анальноограниченным чипом.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
21.02.2018, 22:40
|
#13
|
Заблокирован
Регистрация: 16.05.2015
Адрес: Болгария
Сообщений: 1,460
Сказал спасибо: 286
Сказали Спасибо 1,125 раз(а) в 540 сообщении(ях)
|
Re: Вывод данных на индикатор с аналогового порта
Если у автора железо ПИК16 8 бит не стоит боятся языков выше асемблера. Не занимают так много места. Асемблер нужен только для младших кристаллов. С очень малой памятью програм.
Плохо внятного совета для вывода на 7 индикатор дать не могу.
Для вывода на терминал могу
dim TEXT[32]
UART1_Init(38200)
sub UART_OUT(Value)
ByteToStr(Value,TEXT)
UART1_Write_Text(TEXT)
UART1_Write($0D)
UART1_Write($0A) ' CR
end sub
все это занимает порядка 300 инструкции. Никак не страшно
|
|
|
Сказали "Спасибо" OakRidge
|
|
|
23.02.2018, 19:24
|
#14
|
Гражданин KAZUS.RU
Регистрация: 10.06.2010
Сообщений: 598
Сказал спасибо: 222
Сказали Спасибо 234 раз(а) в 154 сообщении(ях)
|
Re: Вывод данных на индикатор с аналогового порта
Сообщение от andron007
|
Вложение 125588
Да и регистр PCL не может быть больше 255.
|
![Мистер Грин](images/smilies/icon_smilegreen.gif) то что вы знакомы с единственным методом чтения табличных констант , это сугубо ваши проблемы, и обижацо вы можете токмо на себя.
При правильном обращении вообще нет никаких проблем даже с переходами через страницы, не говоря уже о блоках.
изучайте:
Нажмите, чтобы открыть спойлер
Код:
|
;************************************************* *********************
; *
; Files Required: P16F877A.INC *
; *
;************************************************* *********************
; *
; Notes: *
; *
;************************************************* *********************
list p=16f877A ; list directive to define processor
#include ‹p16f877A.inc› ; processor specific variable definitions
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _RC_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF
; '__CONFIG' directive is used to embed configuration data within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
;***** VARIABLE DEFINITIONS
w_temp EQU 0x7D ; variable used for context saving
status_temp EQU 0x7E ; variable used for context saving
pclath_temp EQU 0x7F ; variable used for context saving
;adress_mass EQU 0x70
;adress_mass EQU 0x71
;adress_L EQU 0x71
;adress_H EQU 0x72
;rezalt EQU 0x73
CBLOCK 70h
adress_mass :2
;adress_mass EQU 0x71
adress_L :1
adress_H : 1
rezalt :1
ENDC
;************************************************* *********************
ORG 0x0000 ; processor reset vector
bsf PCLATH,3
bsf PCLATH,4
nop ; nop required for icd
goto init ; go to beginning of program
ORG 0x0004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
movf PCLATH,w ; move pclath register into w register
movwf pclath_temp ; save off contents of PCLATH register
; isr code can go here or be located as a call subroutine elsewhere
movf pclath_temp,w ; retrieve copy of PCLATH register
movwf PCLATH ; restore pre-isr PCLATH register contents
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
;************************************************* ***********
;* процедура нахождения нужного элемента массива
;************************************************* ***********
ORG 0x0080 ;
massiv:
movlw high tabl
addwf adress_H,w
movwf PCLATH
movlw low (tabl-1)
addwf adress_L,w
btfsc STATUS,C
incf PCLATH,f
movwf PCL
return
retlw low (tabl-1)
XORLW 'A'
XORLW 'B'
XORLW 'B'^'A'
;************************************************* ***********
;* таблица элементов массива
;************************************************* ***********
ORG 0x17fe
tabl: retlw 0x01
retlw 0x02 ;0x17ff
retlw 0x03 ;0x1800
retlw 0x04 ;0x1801
;************************************************* ***********
;* таблица элементов массива
;************************************************* ***********
ORG 0x1900
tablL: dt "port 1 - ",0x00
dt "PORT 1 - ",0x00
;************************************************* ***********
;* главная программа
;************************************************* ***********
ORG 0x1F00
init:
main:
movlw 0x00
movwf adress_H
movlw 0x00
movwf adress_L
bcf PCLATH,3
bcf PCLATH,4
call massiv
bsf PCLATH,3
bsf PCLATH,4
movwf rezalt
movlw 0x00
movwf adress_H
movlw 0x01
movwf adress_L
bcf PCLATH,3
bcf PCLATH,4
call massiv
bsf PCLATH,3
bsf PCLATH,4
movwf rezalt
movlw 0x00
movwf adress_H
movlw 0x02
movwf adress_L
bcf PCLATH,3
bcf PCLATH,4
call massiv
bsf PCLATH,3
bsf PCLATH,4
movwf rezalt
movlw 0x00
movwf adress_H
movlw 0x03
movwf adress_L
bcf PCLATH,3
bcf PCLATH,4
call massiv
bsf PCLATH,3
bsf PCLATH,4
movwf rezalt
goto main
END ; directive 'end of program' |
|
|
|
|
23.02.2018, 19:31
|
#15
|
Прописка
Регистрация: 19.02.2008
Адрес: г. Иркутск
Сообщений: 276
Сказал спасибо: 216
Сказали Спасибо 166 раз(а) в 78 сообщении(ях)
|
Re: Вывод данных на индикатор с аналогового порта
Сообщение от DmitriyVDN
|
При правильном обращении вообще нет никаких проблем даже с переходами через страницы, не говоря уже о блоках.
изучайте:
|
Это при правильном обращении, как я и указал. А чушь в чем заключалась?
|
|
|
|
23.02.2018, 20:33
|
#16
|
Гражданин KAZUS.RU
Регистрация: 10.06.2010
Сообщений: 598
Сказал спасибо: 222
Сказали Спасибо 234 раз(а) в 154 сообщении(ях)
|
Re: Вывод данных на индикатор с аналогового порта
Сообщение от andron007
|
как я и указал
|
где вы это указали? вы начали за то шо есть проблемы с табличным чтением , в этом и заключаетцо "чушь"
|
|
|
|
23.02.2018, 21:01
|
#17
|
Прописка
Регистрация: 19.02.2008
Адрес: г. Иркутск
Сообщений: 276
Сказал спасибо: 216
Сказали Спасибо 166 раз(а) в 78 сообщении(ях)
|
Re: Вывод данных на индикатор с аналогового порта
Проблема с переходом есть? А в листинге вашем тот же метод нарисован что и в моем.
Последний раз редактировалось andron007; 23.02.2018 в 21:04.
|
|
|
|
23.02.2018, 22:36
|
#18
|
Гражданин KAZUS.RU
Регистрация: 10.06.2010
Сообщений: 598
Сказал спасибо: 222
Сказали Спасибо 234 раз(а) в 154 сообщении(ях)
|
Re: Вывод данных на индикатор с аналогового порта
нет проблем с переходом , есть ограничения по использованию метода обращения к таблице ввиде
Код:
|
Convert
ADDWF PCL,F ;начало подпрограммы табличной конвертации
RETLW b'01111110' ;символ "0"
RETLW b'00001100' ;символ "1" |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Способы вывода данных на семисегментный индикатор
|
artyomugr |
Микроконтроллеры, АЦП, память и т.д |
44 |
04.08.2011 17:25 |
Учебный стенд на базе AT90S8515
|
Prevan |
Микроконтроллеры, АЦП, память и т.д |
1 |
09.06.2011 21:55 |
Обработка данных с термодатчика
|
dimanfet |
Микроконтроллеры, АЦП, память и т.д |
8 |
11.10.2010 15:16 |
Последовательный вывод данных
|
Mitrar |
Микроконтроллеры, АЦП, память и т.д |
9 |
14.05.2010 11:57 |
Добавление и вывод данных в EEPROM ( PIC16F84A)
|
alexander70 |
Микроконтроллеры, АЦП, память и т.д |
0 |
11.10.2006 12:29 |
Часовой пояс GMT +4, время: 22:05.
|
|