Пост N: 94
Зарегистрирован: 11.03.10
Откуда: РФ, г.Волжск
Рейтинг:
0
Отправлено: 01.02.11 22:20. Заголовок: Не работает RA4!PIC16F877A!
Не подскажите ли вы мне почему не работает у 887А, RA4! На все выводы навесил светодиоды, кроме порта Е! Все светят кроме RA4! Вроде всё отключил: (извиняюсь, что выкладываю целиком,забыл как уменьшать!)
; Рабочая часть программы. 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 ; Директива конца программы (всегда последняя снизу).
Д.Ш. читать надо, PortA,4 не может подать высокий уровень на выводе. там какбы стоит транзистор с коллектором подсоединённым к выводу, и получается этот колектор находится в свободном состоянии, а эмиттер подсоединён на массу. Поэтому чтобы на нём был высокий уровень его нужно соединить с плюсом питания через резистор, ом 200-300.
Пост N: 95
Зарегистрирован: 11.03.10
Откуда: РФ, г.Волжск
Рейтинг:
0
Отправлено: 02.02.11 09:39. Заголовок: MAZ пишет: Там выхо..
MAZ пишет:
цитата:
Там выход с открытым стоком. Поэтому и не работает. Попробуйте подтянуть резистором к +
Спасибо!
ОКТОГЕН пишет:
цитата:
Д.Ш. читать надо, PortA,4 не может подать высокий уровень на выводе. там какбы стоит транзистор с коллектором подсоединённым к выводу, и получается этот колектор находится в свободном состоянии, а эмиттер подсоединён на массу. Поэтому чтобы на нём был высокий уровень его нужно соединить с плюсом питания через резистор, ом 200-300.
Спасибо! Я даташит читал! И читал что-то типа RA4 выход с открытым стоком! Но я думал, это лишь для того, что RA4 может выдать больший ток, чем по сравнению с обычным выходом! Ну!Теперь буду знать!
Пост 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 ;
Отправлено: 04.02.11 22:03. Заголовок: да шапку посмотреть ..
да шапку посмотреть можно. А то так непонятно. Или она что в самом начале АDCON0 0x1F TMR1H 0x0F Ничего в определении не перепутано? У Вас ADCON0 equ 10Fh единичка лишняя, в этом банке. Вот и падает на 0F добавьте перед конфигурацией include <p16f877a.inc> И уберите из шапки все спец регистры, путаницы не будет. Так как в подключенном файле они все прописаны с правильными адресами.
Пост 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 ;================================================================================================== ; Описание регистров специального назначения. ;==================================================================================================
Пост N: 99
Зарегистрирован: 11.03.10
Откуда: РФ, г.Волжск
Рейтинг:
0
Отправлено: 05.02.11 21:19. Заголовок: Сейчас попробовал пр..
Сейчас попробовал прогнать через симулятор программу КЕА из практикума: 7-3- analog_1, и там тоже самое. При попытке скопировать число .142 в регистр ADCON1 копируется число .134. Теперь самый главный для меня вопрос: это у меня одного такой глюк/недочёт? Или он у всех, просто никто на это внимание не обращал? Во общем, парни если нетрудно прогоните у себя в симуляторе из практикума :7-3-analog_1, и напишите пожалуйста, что происходит у вас при копировании числа .142!
Все даты в формате GMT
3 час. Хитов сегодня: 3
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет