Доброго времени суток!
Вот такой казус у меня с pic16f877:
К нему прилеплены кнопки, лампочки, кварец 4MHz и ЖКД.
Написал прогу на микропаскале - работает отлично. Кнопки нажимаются, ЖКД показывает все, что требуется, ламочки горят.
При последующих наворотах проги не уложился в шароварное ограничение размера выходного файла. Перешел на асм ). В асме написал все то же самое (даже лучше). Оттестил все это в протеусе и залил.
На ЖКД кроме тестовых блоков на первой строке ничего. Лампочки горят исправно. Во всяком случае, я могу ими управлять. Думаю, что не проходит инициализация ЖКД. Набор процедур я утянул отсюда:
http://ouwehand.net/~peter/lcd/lcd2.shtml. Ничего там не менял.
На всякий случай, еще раз скажу, что обе проги, на паскале и асме, в протеусе на одной и той же схеме работают. Чиво делать? как дебажить?
Привожу кусок кода с инициализацией портов и ЖКД:
ЗЫ: В битах конфигурации - HS, а все остальное - выкл.
Код:
|
;===============================
#DEFINE BANK0 BCF STATUS, RP0
#DEFINE BANK1 BSF STATUS, RP0
;===============================
ORG 0
GOTO BEGIN
INCLUDE "TEXT.INC"
;============================================
BEGIN
CALL INITPORTS ;
RESET
CALL LCD_GREET ;
GOTO BUTTONS ;
;============================================
INITPORTS
BANK1 ;
MOVLW 0xF0 ;
MOVWF TRISD ;
MOVLW 0xC0 ;
MOVWF TRISC ;
BANK0 ;
CLRF COUNT ;
CALL LCDINIT ; Init Display
MOVLW .17 ; lock and light up red lamp
MOVWF PORTC ;
CLRF PORT ;
CLRF FLAG ;
CLRF MSEC
CLRF SEC
CLRF PIR1
CLRF PIR2
CLRF TMR1H
CLRF TMR1L
BANKSEL PIE1
CLRF PIE1
CLRF PIE2
CLRF STATUS
RETURN
;============================================ |