Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

PIC16F84A RS232 - МОЛЯ ЗА МАЛКО ПОМОЩ!
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=7353
Страница 1 от 1

Автор:  darkshy [ Съб Ное 28, 2009 6:44 am ]
Заглавие:  PIC16F84A RS232 - МОЛЯ ЗА МАЛКО ПОМОЩ!

Здравейте аз съм начинаещ в програмирането на ПИКове, уча се по 1вата част на книгата на МК.
От 2 седмици посещавам форума ви и най-сетне реших да се регистрирам.
Eвала на създателите!
Та така надявам се да ми помогнете поне малко за един мой тестов (учебен) проект...
Значи имам един пик16ф84а. От RA0 трябва да излиза сериен сигнал към един макс232 и отам да влиза в компютъра.
Целта ми е на хипертерминала да се изпише "a4o". Към RA1 има вързан светодиод който индицира дали нещо не е забило, т.е. ако сичко е ОК ще свети ако забие някаде ще е угаснe.
Баудрайта ми е 9600 (104us реализирани с 104 nop-а) parity:none bits:8 stopbits:1 flowctrl:none
Сам го писах кода по диаграмата в прикачения архив и съм обеден, че някаде имам грешка!
Единствената разлика е че на диаграмата стопбитовете са 2 апък аз съм сложил само 1 ама не мисля че е от това проблема.
Даже като го включа към ком порта кат пусна терминала и кат му пусна адаптера веднага светва светодиода и са изписват гарганели на терминала :(
Кварца е 4Mhz с по 22 пф конденз към маса.
И отделно от темата искам да попитам още 1 въпрос: Мога ли PIC16F84A-04/P да го пусна на честота по висока от 4Мхз защото в даташиита пише 20Мхз пак ми казаха че туй 04 значело макс. 4Мхз пак и в книгата на МК така пише?!
Надявам се да ми помогнете :roll: че отношенията ни с пиклиото са :? и само са :evil:
За сега това ако се сетя пак нещо ще питам :)

Прикачени файлове:
testt.zip [18.61 KiB]
122 пъти

Автор:  darkshy [ Съб Ное 28, 2009 8:41 pm ]
Заглавие: 

Също така искам да ви питам има ли друга възможност (не с 104 ноп-а както в кода ми!) с този кварц да изчаква точно 104 микросекунди?
Защото май дори да заредя таймера с нач. стойност 255 и делителя е за WDT мога да искарам минимум 1 милисекунда.
Ето я и диаграмата която е от архива:

Изображение

Надявам се да е полезна на някого. :) На мен много ми помогна да разбера нещата, само дето не работят :( :( :(

Автор:  RM [ Съб Ное 28, 2009 9:31 pm ]
Заглавие: 

Код:
goto         SSET

SSET   

:?: май няма смисъл от това
Виш ,като изкараш SSET веднъш влизаш в DATASEND без CALL -команда ( на края на DATASEND имаш return)
Немам спомен когато се върне PConter от празен LIFO стек какво става.

Автор:  Cekins [ Съб Ное 28, 2009 10:30 pm ]
Заглавие: 

16-ките май скачаха на случайно място. Защо прескалера ти е на WDT? сложи го за таймера. Щом е само за експеримента, ще пишеш малко повечко clrwdt. 84-ката нямаше ли 16-битов таймер? Другия вариант е да броиш n запълвания. Ама най добре е да вземеш един чук и един пирон и да забиеш 84-ката на стената за украса. След това вземаш нещо дето има хардуерен RS232 и си готов.

Автор:  darkshy [ Съб Ное 28, 2009 11:16 pm ]
Заглавие: 

И аз съм на такова мнение за чука и пирона, но целта ми е да реализирам софтуерен уарт. Пак и сега имам само 84ка за по напред смятам да се занимавам с ARM. Все пак благодаря! Ще се мъча още една две седмици и все ще го измисля :) . Има време да се науча все пак съм още 14 годишен :) . В часовете само чертая диаграми и алгоритми и пиша асм-та 8) .

Автор:  RM [ Нед Ное 29, 2009 12:21 am ]
Заглавие: 

Код:
CCS PCM C Compiler, Version 4.088, 38112               28-Íîåìâðè-09 23:18

               Filename: C:\shrot\main.lst

               ROM used: 58 words (6%)
                         Largest free fragment is 966
               RAM used: 5 (7%) at main() level
                         6 (9%) worst case
               Stack:    1 locations

*
0000:  MOVLW  00
0001:  MOVWF  0A
0002:  GOTO   026
0003:  NOP
.................... #include "C:\shrot\main.h"
.................... #include <16F84A.h>
.................... //////// Standard Header file for the PIC16F84A device ////////////////
.................... #device PIC16F84A
.................... #list
.................... 
.................... 
.................... #FUSES NOWDT                    //No Watch Dog Timer
.................... #FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
.................... #FUSES NOPUT                    //No Power Up Timer
.................... #FUSES NOPROTECT                //Code not protected from reading
.................... 
.................... #use delay(clock=4000000)
.................... #use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=8)
0004:  BSF    03.5
0005:  BCF    05.3
0006:  BCF    03.5
0007:  BCF    05.3
0008:  MOVLW  08
0009:  MOVWF  0D
000A:  GOTO   00B
000B:  NOP
000C:  BSF    0D.7
000D:  GOTO   01C
000E:  BCF    0D.7
000F:  RRF    12,F
0010:  BTFSC  03.0
0011:  BSF    05.3
0012:  BTFSS  03.0
0013:  BCF    05.3
0014:  BSF    0D.6
0015:  GOTO   01C
0016:  BCF    0D.6
0017:  DECFSZ 0D,F
0018:  GOTO   00F
0019:  GOTO   01A
001A:  NOP
001B:  BSF    05.3
001C:  MOVLW  1C
001D:  MOVWF  04
001E:  DECFSZ 04,F
001F:  GOTO   01E
0020:  GOTO   021
0021:  BTFSC  0D.7
0022:  GOTO   00E
0023:  BTFSC  0D.6
0024:  GOTO   016
0025:  RETLW  00
.................... 
.................... 
.................... 
.................... 
.................... void main()
.................... {
0026:  CLRF   04
0027:  MOVLW  1F
0028:  ANDWF  03,F
0029:  BSF    03.5
002A:  BCF    05.3
002B:  BCF    03.5
002C:  BSF    05.3
.................... 
....................    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
002D:  BSF    03.5
002E:  MOVF   01,W
002F:  ANDLW  C7
0030:  IORLW  08
0031:  MOVWF  01
.................... 
....................    // TODO: USER CODE!!
.................... printf("AT");
0032:  MOVLW  41
0033:  BCF    03.5
0034:  MOVWF  12
0035:  CALL   004
0036:  MOVLW  54
0037:  MOVWF  12
0038:  CALL   004
.................... }
0039:  SLEEP

Configuration Fuses:
   Word  1: 3FF9   XT NOWDT NOPUT NO

Това елистинг на код

Автор:  darkshy [ Нед Ное 29, 2009 1:12 am ]
Заглавие: 

Направих няколко промени по кода и 104-те микросекунди ги направих с цикъл с макро, но ми дава грешки и неще да компилира :? :? :?
Също така ако можете да ми кажете как да си направя и DATASEND-а да е МАКРОС, че само да пиша
Код:
DATASEND    0x6f
вместо
Код:
movlw    0x6f
call    DATASEND

Ще прикача асм-то и листинга!
Също така тази диаграма отговаря ли на parity=none flowctrl=none stopbits:2 ?
btw hex-a го симулирам с PIC SIMULATOR IDE

Прикачени файлове:
testt.lst.rar [4.6 KiB]
91 пъти
testt.asm [1.29 KiB]
171 пъти
230px-RS232_Diagram.svg.png
230px-RS232_Diagram.svg.png [ 6.32 KiB | Прегледано 1385 пъти ]

Автор:  a_stankov [ Нед Ное 29, 2009 8:56 am ]
Заглавие: 

Погледни ТУК има софт УАРТ с ПИК 16ф84

Автор:  darkshy [ Нед Ное 29, 2009 11:34 pm ]
Заглавие: 

Благодаря станков, но на мен идеята ми е САМ да си го реализирам, но май ще го оставя за в бъдеще :)
Все пак благодаря за линка :wink:
бтв след като изуча пиковете искам да се занимавам професионално в тази среда и да реализирам големи проекти, та въпроса ми е какви мцу-та и процесори да използвам след пиковете? Мисля си за АРМ.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/