АвторСообщение
постоянный участник


Пост N: 94
Зарегистрирован: 11.03.10
Откуда: РФ, г.Волжск
Рейтинг: 0
ссылка на сообщение  Отправлено: 01.02.11 22:20. Заголовок: Не работает RA4!PIC16F877A!


Не подскажите ли вы мне почему не работает у 887А, RA4! На все выводы навесил светодиоды, кроме порта Е!
Все светят кроме RA4! Вроде всё отключил: (извиняюсь, что выкладываю целиком,забыл как уменьшать!)

 
; Микроконтроллер PIC16F877. Частота кварца 4МГц.
LIST p=16f877A
__CONFIG 3F71H
;==================================================================================================
; Описание регистров специального назначения.
;==================================================================================================
IndF equ 00h ;
TMR0 equ 01h ;
PCL equ 02h ;
Status equ 03h ;
FSR equ 04h ;
PortA equ 05h ; PortA.
PortB equ 06h ; PortB.
PortC equ 07h ; PortC.
PortD equ 08h ; PortD.
PortE equ 09h ; PortE.
PCLATH equ 0Ah ;
Intcon equ 0Bh ;
PIR1 equ 0Ch ;
RCSTA equ 18h ;
TXREG equ 19h ;
OptionR equ 81h ;
TrisA equ 85h ; Настройка выводов PortA.
TrisB equ 86h ; Настройка выводов PortB.
TrisC equ 87h ; Настройка выводов PortC.
TrisD equ 88h ; Настройка выводов PortD.
TrisE equ 89h ; Настройка выводов PortE.
TXSTA equ 98h ;
SPBRG equ 99h ;
ADCON1 equ 9Fh ;
ADCON0 equ 10Fh ;
SSPCON equ 14h ;
T1CON equ 10h ;
T2CON equ 12h ;
CCP1CON equ 17h ;
CCP2CON equ 1Dh ;
PR2 equ 92h ;


;==================================================================================================
; Регистры общего назначения.
;==================================================================================================
Y equ 70h ;
Y1 equ 71h ;
Y2 equ 72h ;


; Определение места размещения результатов операций.

F equ 1 ; Результат направить в регистр.
W equ 0 ;
Z equ 2 ;
C equ 0 ; Флаг переноса-заема.


Start clrf Status ;
bcf Status,6 ; Переходим
bsf Status,5 ; в 1-ый банк.
bcf TrisE,4 ; Порт D работает в режиме цифрового ввода вывода.
movlw .6 ;
movwf ADCON1 ;
clrf TrisA ;
clrf TrisB ;
clrf TrisC ;
clrf TrisD ;
clrf TrisE ;
clrf PR2 ;

bcf Status,5 ; в нулевой банк.
clrf Intcon ; запрет прерываний.
bcf SSPCON,5 ; SSPEN - бит вкл/выкл модуля MSSP.
bcf RCSTA,7 ; модуль USART выключен.
bcf ADCON0,0 ; АЦП - выкл.
clrf T1CON ; Модуль TMR1 выключен. ( бит 0 = "0").
clrf T2CON ; Модуль TMR2 выключен. ( бит 2 = "0").
clrf CCP1CON ; Модуль ССР1 выключен. (биты 0-3 = "0").
clrf CCP2CON ; Модуль ССР2 выключен. (биты 0-3 = "0").




; Рабочая часть программы.
clrf PortA ;
clrf PortB ;
clrf PortD ;
clrf PortC ;
clrf PortE ;

Nachalo movlw .255 ;
movwf PortA ;
call ZD ;
clrf PortA ;

movlw .255 ;
movwf PortB ;
call ZD ;
clrf PortB ;

movlw .255 ;
movwf PortD ;
call ZD ;
clrf PortD ;

movlw .255 ;
movwf PortC ;
call ZD ;
clrf PortC ;

goto Nachalo ;

ZD movlw .60 ;
movwf Y2 ;
K2 movlw .60 ;
movwf Y1 ;
K1 movlw .60 ;
movwf Y ;
X1 decfsz Y,F ; Декремент содержимого регистра Sec с помещением резуль-
goto X1 ; тата декремента в этот же регистр.
decfsz Y1,F ; Если этот результат не=0, то осуществляется переход
goto K1 ; в ПП Pause_1 ("закольцовка" в этой ПП).
decfsz Y2,F ; Если =0, то программа исполняется далее.
goto K2
return ;

end ; Директива конца программы (всегда последняя снизу).






Истина где-та рядом!) Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 13 [только новые]


moderator




Пост N: 3058
Зарегистрирован: 03.01.07
Рейтинг: 5
ссылка на сообщение  Отправлено: 01.02.11 22:42. Заголовок: Там выход с открытым..


Там выход с открытым стоком. Поэтому и не работает. Попробуйте подтянуть резистором к +

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 106
Зарегистрирован: 15.03.10
Откуда: Россия, Волжский
Рейтинг: 0
ссылка на сообщение  Отправлено: 01.02.11 22:45. Заголовок: Д.Ш. читать надо, Po..


Д.Ш. читать надо, PortA,4 не может подать высокий уровень на выводе. там какбы стоит транзистор с коллектором подсоединённым к выводу, и получается этот колектор находится в свободном состоянии, а эмиттер подсоединён на массу. Поэтому чтобы на нём был высокий уровень его нужно соединить с плюсом питания через резистор, ом 200-300.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 95
Зарегистрирован: 11.03.10
Откуда: РФ, г.Волжск
Рейтинг: 0
ссылка на сообщение  Отправлено: 02.02.11 09:39. Заголовок: MAZ пишет: Там выхо..


MAZ пишет:

 цитата:
Там выход с открытым стоком. Поэтому и не работает. Попробуйте подтянуть резистором к +


Спасибо!

ОКТОГЕН пишет:

 цитата:
Д.Ш. читать надо, PortA,4 не может подать высокий уровень на выводе. там какбы стоит транзистор с коллектором подсоединённым к выводу, и получается этот колектор находится в свободном состоянии, а эмиттер подсоединён на массу. Поэтому чтобы на нём был высокий уровень его нужно соединить с плюсом питания через резистор, ом 200-300.


Спасибо! Я даташит читал! И читал что-то типа RA4 выход с открытым стоком! Но я думал, это лишь для того, что RA4 может выдать больший ток, чем по сравнению с обычным выходом! Ну!Теперь буду знать!

Истина где-та рядом!) Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 96
Зарегистрирован: 11.03.10
Откуда: РФ, г.Волжск
Рейтинг: 0
ссылка на сообщение  Отправлено: 04.02.11 19:37. Заголовок: Блин! Почему-то не м..


Блин! Почему-то не могу в MPLABе в регистры ADCON0(.65) и ADCON1(.142) вписать нужные мне числа.
Не подскажете в чём может быть проблема/причина?

Истина где-та рядом!) Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 3071
Зарегистрирован: 03.01.07
Рейтинг: 5
ссылка на сообщение  Отправлено: 04.02.11 20:25. Заголовок: А банки проверить?..


А банки проверить?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 97
Зарегистрирован: 11.03.10
Откуда: РФ, г.Волжск
Рейтинг: 0
ссылка на сообщение  Отправлено: 04.02.11 21:43. Заголовок: MAZ пишет: А банки..


MAZ пишет:

 цитата:

А банки проверить?


С банками вроде всё ОК!

Сейчас погонял программу в МПЛАБе и заметил, что копируя какое-либо число в регистр ADCON0, число копируется в регистр tmr1H!
Как отключить этот tmr1H?
Я по-моему всё отключил:

 
Start clrf Status ;
bcf Status,6 ; Переходим
bsf Status,5 ; в 1-ый банк.
bcf TrisE,4 ; Порт D работает в режиме цифрового ввода вывода.
bsf TrisA,0 ;
bcf Status,5 ; в 0-ой банк.
movlw .65 ;
movwf ADCON0 ;

bsf Status,5 ;


movlw .6 ;
movwf ADCON1 ;
clrf TrisA ;
clrf TrisB ;
clrf TrisC ;
clrf TrisD ;
clrf TrisE ;
clrf PR2 ;

bcf Status,5 ; в нулевой банк.
clrf Intcon ; запрет прерываний.
bcf SSPCON,5 ; SSPEN - бит вкл/выкл модуля MSSP.
bcf RCSTA,7 ; модуль USART выключен.
bcf ADCON0,0 ; АЦП - выкл.
clrf T1CON ; Модуль TMR1 выключен. ( бит 0 = "0").
clrf T2CON ; Модуль TMR2 выключен. ( бит 2 = "0").
clrf CCP1CON ; Модуль ССР1 выключен. (биты 0-3 = "0").
clrf CCP2CON ; Модуль ССР2 выключен. (биты 0-3 = "0").


Истина где-та рядом!) Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2139
Зарегистрирован: 14.01.07
Откуда: Россия, Лиски
Рейтинг: 1
Фото:
ссылка на сообщение  Отправлено: 04.02.11 21:55. Заголовок: Регистры в шапке про..


Регистры в шапке прописывали или использовали диррективу?
Судя по написанию имён регистров, прописывали в шапке.



В радиотехнике, существует два вида неисправностей-есть контакт там, где его не должно быть никогда и, нет контакта там, где он должен быть постоянно. Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 3072
Зарегистрирован: 03.01.07
Рейтинг: 5
ссылка на сообщение  Отправлено: 04.02.11 22:03. Заголовок: да шапку посмотреть ..


да шапку посмотреть можно. А то так непонятно. Или она что в самом начале
АDCON0 0x1F
TMR1H 0x0F
Ничего в определении не перепутано?
У Вас
ADCON0 equ 10Fh
единичка лишняя, в этом банке. Вот и падает на 0F
добавьте перед конфигурацией
include <p16f877a.inc>
И уберите из шапки все спец регистры, путаницы не будет. Так как в подключенном файле они все прописаны с правильными адресами.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 98
Зарегистрирован: 11.03.10
Откуда: РФ, г.Волжск
Рейтинг: 0
ссылка на сообщение  Отправлено: 05.02.11 10:26. Заголовок: igor пишет: Регистр..


igor пишет:

 цитата:
Регистры в шапке прописывали или использовали диррективу?
Судя по написанию имён регистров, прописывали в шапке.


Шапку скопировал из обмена, программа часов Сергея Рослика. И как верно заметил MAZ, допустил ошибку пи указании адреса ADCON0! Я так думаю вы тоже это заметили!

MAZ пишет:

 цитата:
да шапку посмотреть можно. А то так непонятно. Или она что в самом начале
АDCON0 0x1F
TMR1H 0x0F
Ничего в определении не перепутано?
У Вас
ADCON0 equ 10Fh
единичка лишняя, в этом банке. Вот и падает на 0F
добавьте перед конфигурацией
include <p16f877a.inc>
И уберите из шапки все спец регистры, путаницы не будет. Так как в подключенном файле они все прописаны с правильными адресами.


Спасибо MAZ! Исправил ошибку! Теперь в регистр ADCON0 записываются числа!
Теперь проблема с ADCON1! Никак не могу у этого регистра третий бит установить в 1! Чтобы сделать один аналоговый вход: RA0/AN0, а остальные оставить как цифровые каналы. ! При копировании числа .142(10001110)
в регистр ADCON1, копируется число 134(10000110)! При команде bsf ADCON1,3 - третий бит как был равен нулю, так и остаётся.
При попытке вставить команду include <p16f877a.inc> , мплаб выдаёт ошибки! Я пробовал и так и сяк, и как в самоучителе написано. Не получается!
Вот шапка:
 
; Микроконтроллер PIC16F877. Частота кварца 4МГц.

LIST p=16f877A
__CONFIG 3F71H
;==================================================================================================
; Описание регистров специального назначения.
;==================================================================================================

IndF equ 00h ;
TMR0 equ 01h ;
PCL equ 02h ;
Status equ 03h ;
FSR equ 04h ;
PortA equ 05h ; PortA.
PortB equ 06h ; PortB.
PortC equ 07h ; PortC.
PortD equ 08h ; PortD.
PortE equ 09h ; PortE.
PCLATH equ 0Ah ;
Intcon equ 0Bh ; Регистр прерываний.
PIR1 equ 0Ch ;
RCSTA equ 18h ;
TXREG equ 19h ;
OptionR equ 81h ; Конфигурация контроллера.
TrisA equ 85h ;
TrisB equ 86h ;
TrisC equ 87h ;
TrisD equ 88h ;
TrisE equ 89h ;
TXSTA equ 98h ;
SPBRG equ 99h ;
ADCON1 equ 9Fh ; Настройка входов АЦП.
ADCON0 equ 1Fh ;
SSPCON equ 14h ;
T1CON equ 10h ;
T2CON equ 12h ;
CCP1CON equ 17h ;
CCP2CON equ 1Dh ;
PR2 equ 92h ;
AdresH equ 1E ;
AdresL equ 9E ;
;==================================================================================================
; Регистры общего назначения.
;==================================================================================================
Y equ 70h ;
Y1 equ 71h ;
Y2 equ 72h ;


; Определение места размещения результатов операций.

F equ 1 ; Результат направить в регистр.
W equ 0 ;
Z equ 2 ;
C equ 0 ; Флаг переноса-заема.




Истина где-та рядом!) Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 99
Зарегистрирован: 11.03.10
Откуда: РФ, г.Волжск
Рейтинг: 0
ссылка на сообщение  Отправлено: 05.02.11 21:19. Заголовок: Сейчас попробовал пр..


Сейчас попробовал прогнать через симулятор программу КЕА из практикума: 7-3- analog_1, и там тоже самое. При попытке скопировать число .142 в регистр ADCON1 копируется число .134.
Теперь самый главный для меня вопрос: это у меня одного такой глюк/недочёт? Или он у всех, просто никто на это внимание не обращал? Во общем, парни если нетрудно прогоните у себя в симуляторе из практикума :7-3-analog_1, и напишите пожалуйста, что происходит у вас при копировании числа .142!

Истина где-та рядом!) Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 100
Зарегистрирован: 11.03.10
Откуда: РФ, г.Волжск
Рейтинг: 0
ссылка на сообщение  Отправлено: 05.02.11 21:37. Заголовок: Вот нашёл на микрочи..


Вот нашёл на микрочип похожую проблему у человека, которому к сожалению не ответили:
http://www.microchip.ru/phorum/read.php?f=2&i=28783&t=28783<\/u><\/a>

Истина где-та рядом!) Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 8
Зарегистрирован: 23.01.11
Откуда: Россия, Саратов
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.02.11 14:27. Заголовок: Kimm пишет: При поп..


Kimm пишет:

 цитата:
При попытке скопировать число .142 в регистр ADCON1 копируется число .134.


Проверил analog_1.asm в симуляторе MPLAB 8.30.
Чип PIC16F873A.
строка 94 в ADCON1 копируется именно .142 ( 0x8E ),
строка 104 в ADCON0 копируется .65 ( 0x41 ).

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 101
Зарегистрирован: 11.03.10
Откуда: РФ, г.Волжск
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.02.11 15:52. Заголовок: sokur пишет: Провер..


sokur пишет:

 цитата:
Проверил analog_1.asm в симуляторе MPLAB 8.30.
Чип PIC16F873A.
строка 94 в ADCON1 копируется именно .142 ( 0x8E ),
строка 104 в ADCON0 копируется .65 ( 0x41 ).


Спасибо! Значит мплаб глючит! ( которую советовал КЕА в самоучителе).

Истина где-та рядом!) Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 3
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



Создай свой форум на сервисе Borda.ru
Текстовая версия