Отговори на тема  [ 9 мнения ] 
PIC16F84A RS232 - МОЛЯ ЗА МАЛКО ПОМОЩ! 
Автор Съобщение
Ранг: Популярен
Ранг: Популярен

Регистриран на: Съб Ное 28, 2009 5:50 am
Мнения: 391
Местоположение: Варна
Мнение 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 пъти
Съб Ное 28, 2009 6:44 am
Профил WWW
Ранг: Популярен
Ранг: Популярен

Регистриран на: Съб Ное 28, 2009 5:50 am
Мнения: 391
Местоположение: Варна
Мнение 
Също така искам да ви питам има ли друга възможност (не с 104 ноп-а както в кода ми!) с този кварц да изчаква точно 104 микросекунди?
Защото май дори да заредя таймера с нач. стойност 255 и делителя е за WDT мога да искарам минимум 1 милисекунда.
Ето я и диаграмата която е от архива:

Изображение

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


Съб Ное 28, 2009 8:41 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Нед Окт 19, 2008 7:26 pm
Мнения: 673
Мнение 
Код:
goto         SSET

SSET   

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

_________________
Вниманиене съмвишист....ИЙ.


Съб Ное 28, 2009 9:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

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


Съб Ное 28, 2009 10:30 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен

Регистриран на: Съб Ное 28, 2009 5:50 am
Мнения: 391
Местоположение: Варна
Мнение 
И аз съм на такова мнение за чука и пирона, но целта ми е да реализирам софтуерен уарт. Пак и сега имам само 84ка за по напред смятам да се занимавам с ARM. Все пак благодаря! Ще се мъча още една две седмици и все ще го измисля :) . Има време да се науча все пак съм още 14 годишен :) . В часовете само чертая диаграми и алгоритми и пиша асм-та 8) .


Съб Ное 28, 2009 11:16 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Нед Окт 19, 2008 7:26 pm
Мнения: 673
Мнение 
Код:
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

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

_________________
Вниманиене съмвишист....ИЙ.


Нед Ное 29, 2009 12:21 am
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Съб Ное 28, 2009 5:50 am
Мнения: 391
Местоположение: Варна
Мнение 
Направих няколко промени по кода и 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]
92 пъти
testt.asm [1.29 KiB]
172 пъти
230px-RS232_Diagram.svg.png
230px-RS232_Diagram.svg.png [ 6.32 KiB | Прегледано 1390 пъти ]


Последна промяна darkshy на Нед Ное 29, 2009 3:15 am, променена общо 1 път

Нед Ное 29, 2009 1:12 am
Профил WWW
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Съб Дек 06, 2008 9:22 am
Мнения: 119
Местоположение: Пловдив
Мнение 
Погледни ТУК има софт УАРТ с ПИК 16ф84


Нед Ное 29, 2009 8:56 am
Профил
Ранг: Популярен
Ранг: Популярен

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


Нед Ное 29, 2009 11:34 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 9 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни