Author Topic: RS232 комуникација со PIC 16f628  (Read 1519 times)

Offline Goce

  • Стручњак
  • ***
  • Posts: 366
  • Gender: Male
RS232 комуникација со PIC 16f628
« Opened on 31.10.2009, Saturday, 15:25:30 (Edited 31.10.2009, Saturday, 15:33:03) »
Имам доста програмчиња направено за пикови со PIC BASIC програмски јазик, ама никогаш немам правено некој програм за комуникација PC so PIC.
Направив програм ама само може со еден карактер ко на пример "2" да активирам една порта излезна на пикот во случајов porta.1 користам внатрешен осцилатор 4 MHz
CMCON=7
INCLUDE "modedefs.bas"
B1 VAR BYTE

TRISB.1= %1
TRISA.1= %0

MAIN:
SERIN PORTB.1,T2400,["2"],B1
HIGH PORTA.1
PAUSE 1000
LOW PORTA.1
GOTO MAIN
END

Ова е програмот а софтвер за комуникација  PC со пикот го користам софтверот на micro code studio
Serial communication Window  кога ке му пратам "2 "на пикот ја активира porta.1  чека 1 секунда и ја гаси.Е сеа како би можел да направам на пример ако му пратам "2" да ја активира porta.1 ако му пратам "3" да ја акотивира porta.2 ако му пратам "4 "да ја активира porta.3
Јас пробав со овој програм ама не работи
 cmcon = 7
 INCLUDE "modedefs.bas"   
   
    TrisA = %00000000
    TrisB.1 = %1

x VAR byte

main:
SERIN PORTB.1,T2400,[X]
IF x = 0 THEN HIGH PORTA.1
IF x = 1 THEN HIGH PORTA.2
IF x = 2 THEN HIGH PORTA.3
IF x = 3 THEN HIGH PORTA.4
GOTO main
end

Offline Shotgun

  • Нов член
  • *
  • Posts: 8
  • Gender: Male
    • http://bitless.mk
Одг: RS232 комуникација со PIC 16f628
« Reply #1 on 31.10.2009, Saturday, 18:26:54 (Edited 31.10.2009, Saturday, 18:32:40) »
За ова друже сега ќе ти го пуштам Борче.  ;D
(edit) Ќе почекаш одговор до вечер покасно!

Offline Goce

  • Стручњак
  • ***
  • Posts: 366
  • Gender: Male
Одг: RS232 комуникација со PIC 16f628
« Reply #2 on 31.10.2009, Saturday, 19:05:16 (Edited 31.10.2009, Saturday, 19:29:59) »
Успеав да го направам програмот малце се помучив ама работи.


INCLUDE "MODEDEFS.BAS"
cmcon=7

trisa=%00000000
trisb.1=%1
trisb.2=%0
trisa =%00000000


B1 VAR BYTE


main:
serin portb.1,T2400,B1
if B1="1" then led
if B1="2" then led1
if B1="3" then led2
goto main

led:
high porta.1
pause 1000
low porta.1
goto main

led1:
high porta.2
pause 1000
low porta.2
goto main

led2:
high porta.3
pause 1000
low porta.3
goto main

END


A оваа програма ја направив за да го врака примениот податок назат за да провери PC дали стигнал податокот

INCLUDE "MODEDEFS.BAS"
cmcon=7

trisa=%00000000
trisb.1=%1
trisb.2=%0
trisa =%00000000


B1 VAR BYTE


main:
serin portb.1,T2400,B1
if B1="1" then led
if B1="2" then led1
if B1="3" then led2
goto main

led:
high porta.1
pause 300
low porta.1
serout portb.2,t2400,["1"]
goto main

led1:
high porta.2
pause 300
low porta.2
serout portb.2,t2400,["2"]
goto main

led2:
high porta.3
pause 300
low porta.3
serout portb.2,t2400,["3"]
goto main

END

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Одг: RS232 комуникација со PIC 16f628
« Reply #3 on 31.10.2009, Saturday, 19:31:51 »
Ако може да ми ја објасниш намената на ова, односно за што ќе се користи оваа комуникација, што се постигнува со тоа ?
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline Goce

  • Стручњак
  • ***
  • Posts: 366
  • Gender: Male
Одг: RS232 комуникација со PIC 16f628
« Reply #4 on 31.10.2009, Saturday, 19:59:27 »
Ако може да ми ја објасниш намената на ова, односно за што ќе се користи оваа комуникација, што се постигнува со тоа ?

За една фирма правам електроника за рулети и Black jack и други глупости.
Black jack от нема некоја електроника како рулетот има 7 компјутери 1 е сервер и 6 клиенти значи 6 играчки места.Е сега треба да направам електроника за маханички бројчаници на кој што ке се отчитува влез на пари излез на пари број на игри е сеа серверот од базата црпи инвормации колку има влез и излез на пари број на игри и преку enternet port со конвертор на RS232 комуницира со пикот.
На пример ако има влез од 1000 ден ако во сотверот е девинирано едно откуцување на бројчаникот да биде 100 ден тогаш совтверо му прака "1" на пикот и пикот ја активира porta.1 со што ке го активира бројчаникот  и после пикот му прака повратна информација на софтверот дека го примил "1" за 1000 ден софтверот му прака 10  "1" една по друга

Offline BorceBT

  • Топ Експерт
  • *****
  • Posts: 1826
  • Gender: Male
    • www.trajkovski.net
Одг: RS232 комуникација со PIC 16f628
« Reply #5 on 31.10.2009, Saturday, 23:55:04 »
Епа супер ако си го средил сам (така ве сакам :) )
Никогаш неможеш да знаеш се, но секогаш можеш да знаеш повеќе.

Offline Goce

  • Стручњак
  • ***
  • Posts: 366
  • Gender: Male
Одг: RS232 комуникација со PIC 16f628
« Reply #6 on 20.11.2009, Friday, 21:52:56 (Edited 20.11.2009, Friday, 21:54:36) »
Еве некоја сликичка од изработениот проект


Offline BorceBT

  • Топ Експерт
  • *****
  • Posts: 1826
  • Gender: Male
    • www.trajkovski.net
Одг: RS232 комуникација со PIC 16f628
« Reply #7 on 21.11.2009, Saturday, 00:40:04 »
Солидно. А тој џекот за мрежа што е, го користиш за да приклучиш некоја сонда или?
Никогаш неможеш да знаеш се, но секогаш можеш да знаеш повеќе.

Offline Goce

  • Стручњак
  • ***
  • Posts: 366
  • Gender: Male
Одг: RS232 комуникација со PIC 16f628
« Reply #8 on 21.11.2009, Saturday, 11:55:05 »
Конекторот за мрежа го користам за приклучување на три надворешни механички бројчаници.

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Одг: RS232 комуникација со PIC 16f628
« Reply #9 on 28.12.2009, Monday, 22:02:00 (Edited 28.12.2009, Monday, 22:05:59) »
дали е можно да ми објасни некој нештово врска со програмава ?

Quote
INCLUDE "MODEDEFS.BAS"
cmcon=7

trisa=%00000000
trisb.1=%1
trisb.2=%0
trisa =%00000000


B1 VAR BYTE


main:
serin portb.1,T2400,B1
if B1="1" then led
if B1="2" then led1
if B1="3" then led2
goto main

led:
high porta.1
pause 1000
low porta.1
goto main
од предавателниот дел

Quote
INCLUDE "MODEDEFS.BAS"
cmcon=7

trisa=%00000000
trisb.1=%1
trisb.2=%0
trisa =%00000000


B1 VAR BYTE


main:
serin portb.1,T2400,B1
if B1="1" then led
if B1="2" then led1
if B1="3" then led2
goto main

led:
high porta.1
pause 300
low porta.1
serout portb.2,t2400,["1"]
goto main
од приемниот дел ( тој што враќа повратан информација назад  :) )
дали може да ми напише некој коментар од страна на овие два дела која функција што е ??
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline Goce

  • Стручњак
  • ***
  • Posts: 366
  • Gender: Male
Одг: RS232 комуникација со PIC 16f628
« Reply #10 on 30.12.2009, Wednesday, 21:45:54 »

cmcon=7 исклучи компаратор

trisa=%00000000 пиновите на PORTA сетирајги сите излезни

trisb.1=%1  пин PORTB.1 сетирајго влезен
trisb.2=%0  пин PORTB.2 сетирајго излезен

B1 VAR BYTE променлива во која се запишуваат податоците што ги прака компјутерот

serin portb.1,T2400,B1   Со  serin се сетира влезна порта за примање податоци од ком. и Baud rate - Т2400 брзина на пренос на податоци

main:  -лабела
if B1="1" then led      Ако ком. прати (1) преиди на лабела (led)
if B1="2" then led1
if B1="3" then led2
goto main  -Ако немаш примено податок вратисе назад (main)

led:
high porta.1      активира ја порта А1 "1"

pause 300         почекај 300 милисекунди

low porta.1       симнија порта А1 на "0"

serout portb.2,t2400,["1"]    Со serout се сетира излезна порта преку која PIC от ке му прака на компјутерот податоци во овој случај му прака (1) и му потврдува на софтверот дека ја активирал порта А1 почекал 300 милисекунди и ја спуштил на "0"

goto main  вратисе на почеток

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Одг: RS232 комуникација со PIC 16f628
« Reply #11 on 30.12.2009, Wednesday, 22:04:27 »
фала многу
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline gjoreski

  • Нов член
  • *
  • Posts: 6
Еве и јас ке се надоврзам на темава аку е малку постара .Еве и од мене како го имам јас ресено ттоа на еден мој уред,

 '****************************************************************
'*  Name    : Kontrola                                          *
'*  Author  : Gjoreski Aleksandar                               *
'*  Notice  : ACElectronica 070-998-327                         *
'*          : Ohrid                                             *
'*  Date    : 07.03.2009                                        *
'*  Version : 1.0                                               *
'*  Notes   : PIC 16F870                                        *
'*          :                                                   *
'****************************************************************
 B0 VAR Word                'Promenliva B0 od tipot VAR WORD
 '***************************************************************
 '                  PORTA SO TRIACI
 '***************************************************************
           low PORTA.0      'Nisko nivo na porta A0 Pin 2
               low PORTA.1      'Nisko nivo na porta A1 Pin 3
               low PORTA.2      'Nisko nivo na porta A2 Pin 4
               low PORTA.3      'Nisko nivo na porta A3 Pin 5
               low PORTB.4      'Nisko nivo na porta B4 Pin 25
               low PORTB.5      'Nisko nivo na porta B5 Pin 26
               low PORTB.6      'Nisko nivo na porta B6 Pin 27
               low PORTB.7      'Nisko nivo na porta B7 Pin 28
 '***************************************************************
 '                  PORTA SO RELEA
 '***************************************************************
               low PORTC.0      'Nisko nivo na porta C0 Pin 11
               low PORTC.1      'Nisko nivo na porta C1 Pin 12
               low PORTC.2      'Nisko nivo na porta C2 Pin 13
               low PORTC.3      'Nisko nivo na porta C3 Pin 14
               low PORTC.4      'Nisko nivo na porta C4 Pin 15
               low PORTC.5      'Nisko nivo na porta C5 Pin 16
               low PORTC.6      'Nisko nivo na porta C6 Pin 17
               low PORTC.7      'Nisko nivo na porta C7 Pin 18
Ciklus:
   
        Serin2 Porta.5,84,[B0]  'Primi podatok preku PortA.5(Pin 6)
                            'i smesti go vo BO
        PAUSE 10                'Pauza od 10 milisekundi
       
    Select Case B0
        Case "A"
           High PORTA.3
           High PORTC.0
            Case "a"
               low PORTA.3
               low PORTC.0
            Case "B"
           High PORTA.2
           High PORTC.1
            Case "b"
               low PORTA.2
               low PORTC.1
        Case "C"
           High PORTA.1
           High PORTC.2
            Case "c"
               low PORTA.1
               low PORTC.2
            Case "D"
           High PORTA.0
           High PORTC.3
            Case "d"
               low PORTA.0
               low PORTC.3
        Case "E"
           High PORTB.7
           High PORTC.4
            Case "e"
               low PORTB.7
               low PORTC.4
            Case "F"
           High PORTB.6
           High PORTC.5
            Case "f"
               low PORTB.6
               low PORTC.5
        Case "G"
           High PORTB.5
           High PORTC.6
            Case "g"
               low PORTB.5
               low PORTC.6
            Case "H"
           High PORTB.4
           High PORTC.7
            Case "h"
               low PORTB.4
               low PORTC.7
        Case "+"            'Ukluci
           High PORTA.0     'Visoko nivo na porta A
           High PORTA.1     'Visoko nivo na porta A
           High PORTA.2     'Visoko nivo na porta A
           High PORTA.3     'Visoko nivo na porta A
           High PORTB.4     'Visoko nivo na porta B
           High PORTB.5     'Visoko nivo na porta B
           High PORTB.6     'Visoko nivo na porta B
           High PORTB.7     'Visoko nivo na porta B
           High PORTC.0     'Visoko nivo na porta C
           High PORTC.1     'Visoko nivo na porta C
           High PORTC.2     'Visoko nivo na porta C
           High PORTC.3     'Visoko nivo na porta C
           High PORTC.4     'Visoko nivo na porta C
           High PORTC.5     'Visoko nivo na porta C
           High PORTC.6     'Visoko nivo na porta C
           High PORTC.7     'Visoko nivo na porta C
            Case "-"            'Iskluci
               low PORTA.0      'Nisko nivo na porta A
               low PORTA.1      'Nisko nivo na porta A
               low PORTA.2      'Nisko nivo na porta A
               low PORTA.3      'Nisko nivo na porta A
               low PORTB.4      'Nisko nivo na porta B
               low PORTB.5      'Nisko nivo na porta B
               low PORTB.6      'Nisko nivo na porta B
               low PORTB.7      'Nisko nivo na porta B
               low PORTC.0      'Nisko nivo na porta C
               low PORTC.1      'Nisko nivo na porta C
               low PORTC.2      'Nisko nivo na porta C
               low PORTC.3      'Nisko nivo na porta C
               low PORTC.4      'Nisko nivo na porta C
               low PORTC.5      'Nisko nivo na porta C
               low PORTC.6      'Nisko nivo na porta C
               low PORTC.7      'Nisko nivo na porta C
         End Select             'Kraj na selekcijata
 GoTo Ciklus                'Povtori go ciklusot
        End                         'Kraj

Offline SKOLS_OLD

  • Топ Експерт
  • *****
  • Posts: 2782
  • Gender: Male
дали може да ми помогне некој,сакам да направам РС232 комуникација преку ПЦ да контролирам уреди,да има ЛЦД екран и неколку релиња!!Може ли да ми помогнете!!
Јас почнав да пишам програма за ПИЦ16Ф628А со 20МХз кристал за екранот(ЛЦД дисплејот) го пуштив и работи,но сега незнам како да го поврзам РС232 конекторот дали директно или со МАХ232??Немам програма напишано за РС232 дека незнам!! :'( >:(

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
еве една моја програма во mikroBasic
ептем е глупа ама за учење е таман :)
тоа што ќе пратиш од компјутер овај ти враќа назад :)

Code: [Select]
program UART
symbol pauza1= Delay_ms(200)  ' Pauzi
dim uart_1 as byte
dim dat as byte
main:
UART1_init(2400)               'Baud Rate 2400
pauza1                         'Ckeja da se stabilizira UART terminalot

while true
      if UART1_Data_Ready= 1 then 'Ako primi nekoj podatok
      dat= UART1_Read             'Procitaj go primeniot podatok
      UART1_Write(dat)            'Isprati podatok preku UART
      end if
wend
end.
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!