PIC16F877 аппаратные проблемы

S

sanaprog

Guest
привет всем ... я новичок рис ... я сделал свой собственный ЧМТ тренер рис ... с 20 МГц Crytal. (также проверить с 8 МГц) ... но проблема в том, когда я сжечь некоторые примеру MikroC N Run ЧМТ .. она работает хорошо .. BT, когда я записать свой простейшая программа просто отправив любое значение в порт D оно не работает ... :-( ..... даже кристалл не показывает никаких колебаний ... Пример кода: силы основных () {trisd = 0; PORTD = 0, в то время (1) {PORTD = ~ PORTD; delay_ms (1000);}} / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / мой код: силы основных () {trisd = 0; PORTD = 0x3f;} так просто, но .. не работает: - (......... я использую микро C8 .....
 
Вы уверены, что он будет работать с маленькой буквы и т.д. для TRISD PORTD? [COLOR = "Silver"] [SIZE = 1] ---------- Сообщение добавлено в 20:26 ------- --- Предыдущее сообщение было в 20:22 ---------- [/SIZE] [/COLOR] Но в любом случае, в Привет Tech C, он не будет принимать "trisd '' и т.д. PORTD, вместо Я должен использовать 'TRISD', 'PORTD "и т.д..
 
Вы уверены, что он будет работать с небольшими буквами и т.д. TRISD PORTD
Это будет?. Он забыл установить биты конфигурации.
 
но так как например программа работает, так что я думаю, что это может быть проблемой. Основными недействительным () {trisd = 0; PORTD = 0x3f;} Этот код не начнет мигать светодиод ...
 
так просто, но не работает ..
Ваша простая программа имеет несколько проблем, которые могут привести к неожиданным результатам: Оригинальный код:
Code:
 силы основных () {trisd = 0; PORTD = 0x3f;}
модифицированный код:
Code:
 силы основных () {trisd = 0; PORTD = 0x3f; [COLOR = "# FF0000"] в то время как (1); [/COLOR]}
Основные опущен пункт в то время как цикл, который предотвращает выполнение потока от выхода в основную программу. Это необходимо в связи с тем, нет никаких OS передать исполнение. BigDog
 
Все MIKROE компиляторы поддерживают до конца программы без неограниченное время цикла. Даже Keil нормально работает после того, как основная программа выполняется. Таким образом, это не проблема.
 
Есть ли у вас ссылка на это? Я никогда не слышал о встроенной системе будет разрешено выйти из основного цикла, если вы предполагаете, что составитель IDE вы упомянули добавляется автоматически. Если вы выйдете из основного цикла она будет генерировать неожиданные результаты в отличие от фактической операционной системы, как Windows, где есть надлежащее обработчики для этого. Alex
 
Я не думаю, опуская в то время как (1); заявление является хорошей практикой. Я помню, мне сказали (но я не могу сказать, что / кто) программа будет работать еще в начале программы. Я не ясно, к какой чип / компилятор это относится. То, что для большинства случаев не желаемое поведение. Тем не менее, мы могли бы быть еще более несчастной с некоторыми компилятор / процессор при запуске программы на незапрограммированное пространстве или в другом месте (кто знает?), Который я считаю абсолютно не желательное поведение.
 
Хорошая практика или нет - не имеет значения. В данном случае это не проблема. Этот код должен работать. Я использую этот компилятор.
 
main.c *****************
Code:
 # включить # включить # включить "usart.h" / * простой демонстрации последовательных сообщений, которое включает в себя * на плате аппаратного USART из Microchip * PIC16Fxxx серии устройств. * / Недействительным прерываний ISR (недействительными); Основными недействительным (недействительными) {неподписанные символ входа; Int I; INTCON = 0x00; / / Цель отключения прерываний. init_comms (); / / настроить USART - параметры, определенные в usart.h / / Вывод сообщения запрашивает у пользователя нажатие sendstring ("Добро пожаловать в MegaByte Technologies \ п"); то время как (1) {sendstring ("Добро пожаловать в MegaByte Technologies \ п "); / / если (PIR1 и 0x20) / / прерывание ISR (); / / sendstring (" Добро пожаловать в MegaByte Technologies \ п "); / / для (я = 0; я
 
В MikroC, по умолчанию, регистры не учитывается. Таким образом, это не имеет значения, если вы пишете PORTD или PORTD. То же самое. Основная проблема, как отмечалось выше, является то, что в то время как цикл был опущен. Это означает, что после выполнения всех операторов, программа возвращается к началу, проходит через все инициализации и вещи, и это приводит к нежелательным результатам. Всегда держите программы в основном цикле. Кроме того, проверьте настройки конфигурации. У вас может быть неправильной настройки конфигурации, как сторожевой таймер включен, или неправильные настройки генератора. Проверить и исправить параметры конфигурации, выбрав Проект> Изменить. Надеюсь, что это помогает. Tahmid.
 
Thnx всем ........... MikroC компилятор не чувствительна к регистру ... так PORTD или PORTD не проблема ... (в Proteus это работает код) .... да WDT может быть проблема. . Ил проверить его ...
 
Код:
Code:
 силы основных () {ansela = 0; TRISA = 0; PORTB = 0; PORTA = 0;}
делает ASM каталоге:
Code:
 _main:; Oven1.c, 5 :: силы основных (); Oven1.c, 7 :: ansela = 0; CLRF ANSELA +0; Oven1.c, 8 :: TRISA = 0; CLRF TRISA +0; Oven1.c, 9 :: PORTB = 0; CLRF PORTB +0 , Oven1.c, 10 :: PORTA = 0; CLRF PORTA +0; Oven1.c, 11 ::} L_end_main: GOTO $ +0; конце _main
 
Easyrider, это хорошее доказательство вашей претензии. Рад знать, что. Спасибо.
 
Thnx всем ..... да она работала,,,, проблема была, установив биты конфигурации WDT, LVP и т.д. ... в то время как (1) также не является необходимым для поддержания контроля в основном все время ...: - )
 

Welcome to EDABoard.com

Sponsor

Back
Top