Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: bulut_01 - 14 Aralık 2017, 00:56:00

Başlık: UART veri göndermek ?
Gönderen: bulut_01 - 14 Aralık 2017, 00:56:00
iyi geceler arkadaslar uartdan 110 byte veri göndermek istiyorum putc veya print komutları ile bu ascii kodu nasıl gönderebilirim?  putc komutu ilk satırı gönderim dedim olmadı.
göndermek istediğim ascii kodlar bu;
C8 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D8 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D 68 09 3B 23 62 30 54 45 53 54 3D 68 09 3B 23 62 30 54 45 53 54 3D

örnek yazdııgm kod;
#include <16F628A.h>
#FUSES NOWDT                    //No Watch Dog Timer
#fuses INTRC_IO                     
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_B2,rcv=PIN_B1,PARITY=E,BITS=8,STOP=1,ERRORS)

#use fast_io(A)
#use fast_io(B)

void main()
{

setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

set_tris_a(0b00000000);
set_tris_b(0b00000000);

output_a(0x00);
output_b(0x00);

while(true){

int i;
char buffer[2]={'C','8'};

for(i=0;i<=100;i++){
putc(buffer[i]);

}}}
Başlık: Ynt: UART veri göndermek ?
Gönderen: dumansiz - 14 Aralık 2017, 08:05:35
CCS C bilmiyorum ama;

#use rs232(baud=9600, xmit=PIN_B2,rcv=PIN_B1,PARITY=E,BITS=8,STOP=1,ERRORS)
Sadece bunu yazmak seri portun açılmasına yetiyor mu?
PARITY=E olarak kullanmışsın. Gönderdiğin tarafta da bu şekilde mi ayarlı.
PARITY=N yapıp deneyebilirsin.

Eğer seri port açıldıysa bile
set_tris_b(0b00000000);

output_b(0x00);

bu komutlarla iptal ediyorsun.

for(i=0;i<=100;i++){
putc(buffer[i]);

}

2 elemanlı dizinin olmayan elemanlarına erişmeye çalışıyorsun. Yazılım saçmalayabilir. Ya dizini 101 elemanlı yap ya da; "i<2" koşulunu kullan.
Başlık: Ynt: UART veri göndermek ?
Gönderen: makine_terbiyecisi - 14 Aralık 2017, 09:33:12


#include <16F628A.h>
#FUSES NOWDT                    //No Watch Dog Timer
#fuses INTRC_IO                     
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection
#use delay(clock=4000000)
#use rs232(UART1,baud=9600, xmit=PIN_B2,rcv=PIN_B1,PARITY=N,STREAM=DATA_SEND,BITS=8,STOP=1,ERRORS)

#use fast_io(A)
#use fast_io(B)

void main()
{

set_tris_a(0b00000000);
set_tris_b(0b00000000);

output_a(0x00);
output_b(0x00);

int i;
char *buffer[2]={'C','8'};
while(true){

for(i=0;i<2;i++){
fprintf(DATA_SEND, "%s", buffer[i]);

}}}



Bu şekilde dene bakalım.

iyi çalışmalar.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 14 Aralık 2017, 10:14:03
Cvplarınız için saolun ilk satırı değilde hepsini birden nasıl gönderebilirim kolay yolu nedir buffer 110 byte ascii kodu yukardaki gibi tek tek mi yazmalıyım?
Başlık: Ynt: UART veri göndermek ?
Gönderen: sadogan - 14 Aralık 2017, 10:58:15
1 byte gönderebiliyormusun ?

Başlık: Ynt: UART veri göndermek ?
Gönderen: makine_terbiyecisi - 14 Aralık 2017, 11:05:20
Alıntı yapılan: bulut_01 - 14 Aralık 2017, 10:14:03
Cvplarınız için saolun ilk satırı değilde hepsini birden nasıl gönderebilirim kolay yolu nedir buffer 110 byte ascii kodu yukardaki gibi tek tek mi yazmalıyım?

Bir anda gönderemezsin. Çünkü UART seri haberleşme ile çalışır. Artı dataları 8 bit olarak gönderir.
Sen 110 byte yollasan bile program onu 8 bit kümeleri halinde sıra ile gönderir alıcı tarafa.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 14 Aralık 2017, 11:19:55
Üstad buffer bir sınırı var mı kaç byte kadar yazabiliyoruz?
char *buffer[110]={'C', '8', '0' ,'9', '3' ,'B...}  Şeklinde 110 byte veriyi yazacagım değil mi?
Başlık: Ynt: UART veri göndermek ?
Gönderen: makine_terbiyecisi - 14 Aralık 2017, 12:13:20
Alıntı yapılan: bulut_01 - 14 Aralık 2017, 11:19:55
Üstad buffer bir sınırı var mı kaç byte kadar yazabiliyoruz?
char *buffer[110]={'C', '8', '0' ,'9', '3' ,'B...}  Şeklinde 110 byte veriyi yazacagım değil mi?

Kullandığın mikrokontrollörün ROM ve RAM belleğinin yetebileceği kadarını diziye tanımlayabilirsin.
örneğin char *data[9999] = { 'x', 'R', ... };
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 14 Aralık 2017, 13:09:57
üstad asagıdakı ccs derlemiyor data_send komutu bilinmeyen komut diye hata veriyor


int i;

char *buffer[2]={'C','8'};

for(i=0;i<2;i++){
fprintf(DATA_SEND , "%s", buffer[i]);
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 14 Aralık 2017, 16:02:44
Bu konuda yardımcı olurmusunuz arkadaslar.
Başlık: Ynt: UART veri göndermek ?
Gönderen: baran123 - 14 Aralık 2017, 16:08:01
Şu kısmı:
#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1, PARITY=N, BITS=8, STOP=1, ERRORS)
Şu şekilde düzeltirsen hata vermez
#use rs232(UART1,baud=9600, xmit=PIN_B2, rcv=PIN_B1, PARITY=N, STREAM=DATA_SEND, BITS=8, STOP=1, ERRORS)
Sadece stream ismi tanımla ve parity bitine dikkat et alıcı taraftada aynısını yapman gerekiyor. Lazım değilse N olarak ver.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 14 Aralık 2017, 22:56:06
Alıntı yapılan: baran123 - 14 Aralık 2017, 16:08:01
Şu kısmı:
#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1, PARITY=N, BITS=8, STOP=1, ERRORS)
Şu şekilde düzeltirsen hata vermez
#use rs232(UART1,baud=9600, xmit=PIN_B2, rcv=PIN_B1, PARITY=N, STREAM=DATA_SEND, BITS=8, STOP=1, ERRORS)
Sadece stream ismi tanımla ve parity bitine dikkat et alıcı taraftada aynısını yapman gerekiyor. Lazım değilse N olarak ver.


derleme sorunum gitti yanlız hiç data göndermiyor tx hep 5 volt var atladıgım kısım neresi ?

#include <16F628A.h>
#FUSES NOWDT                    //No Watch Dog Timer
#fuses INTRC_IO                     
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin disabled
#FUSES NOCPD                    //No EE protection
#use delay(clock=4000000)
#use rs232(UART1,baud=9600, xmit=PIN_B2,rcv=PIN_B1,PARITY=E,STREAM=DATA_SEND,BITS=8,STOP=1,ERRORS)

#use fast_io(A)
#use fast_io(B)

void main()
{

set_tris_a(0b00000000);
set_tris_b(0b00000000);

output_a(0x00);
output_b(0x00);

int i;
char *buffer[2]={'C','8'};

while(true){

for(i=0;i<2;i++){
fprintf(DATA_SEND, "%s", buffer[i]);

}}}
Başlık: Ynt: UART veri göndermek ?
Gönderen: baran123 - 14 Aralık 2017, 23:07:25
Yapman istediğini tam olarak anlamadım.
C8 zaten bir hex kodu değilmi ? yani 0xC8 değil mi ? Neden tek tek gönderiyorsun ?
CCS kullanmıyorum ama şu şekilde ekrana C8 yazdırabilirsin tabi sen fprintf fonksiyonuna göre bunu düzenle

char buffer[2] = {'C', '8'};
   
for(int i = 0; i < 2; i++)
   printf("%c", buffer[i]);
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 14 Aralık 2017, 23:30:08
Alıntı yapılan: baran123 - 14 Aralık 2017, 23:07:25
Yapman istediğini tam olarak anlamadım.
C8 zaten bir hex kodu değilmi ? yani 0xC8 değil mi ? Neden tek tek gönderiyorsun ?
CCS kullanmıyorum ama şu şekilde ekrana C8 yazdırabilirsin tabi sen fprintf fonksiyonuna göre bunu düzenle

char buffer[2] = {'C', '8'};
   
for(int i = 0; i < 2; i++)
   printf("%c", buffer[i]);


Mesele c8 değil o bir örnek mesele en basta yazdıgım 110 bytelık ascii kodlarını uart ile yollamak arkadasın yazdıgı örneğini denedim c8 göndermek için olmadı data gitmiyor bu uart konusunda yabancısıyım onun için sizlerden bilgi alıyorum.
Başlık: Ynt: UART veri göndermek ?
Gönderen: makine_terbiyecisi - 15 Aralık 2017, 10:51:59
İlk olarak, TX ucunda hep 5V olması gayet doğal. Doğal çünkü stop biti TRUE yani lojik 1 dir. Lojik-1 demek 5V demek. Veri iletimi olmadığı zaman hep 5V seviyesinde olur.

İkincisi, data yollasan bile multimetre ile bunu görme şansın olmayabilir. Osiloskop yardımıyla verinin gidip gitmediğini anlayabilirsin.
Her bir veri gönderiminde tx ucu lojik-0 'a çekilir. Yani 0V olur. Veri iletimi bitince tekrar 5V a çıkar. Yani veri iletimi esnasında osiloskopta bir kare dalga görürsün.

Üçüncüsü, veriyi nereye gönderiyorsun?

iyi çalışmalar.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 15 Aralık 2017, 11:37:23
Alıntı yapılan: makine_terbiyecisi - 15 Aralık 2017, 10:51:59
İlk olarak, TX ucunda hep 5V olması gayet doğal. Doğal çünkü stop biti TRUE yani lojik 1 dir. Lojik-1 demek 5V demek. Veri iletimi olmadığı zaman hep 5V seviyesinde olur.

İkincisi, data yollasan bile multimetre ile bunu görme şansın olmayabilir. Osiloskop yardımıyla verinin gidip gitmediğini anlayabilirsin.
Her bir veri gönderiminde tx ucu lojik-0 'a çekilir. Yani 0V olur. Veri iletimi bitince tekrar 5V a çıkar. Yani veri iletimi esnasında osiloskopta bir kare dalga görürsün.

Üçüncüsü, veriyi nereye gönderiyorsun?

iyi çalışmalar.
Similasyonu proteusda yapıyorum virtual terminaldan da osiloskop da baktım veri gitmiyor yani hep 5 volt var hiç bir tepki yok tx pininde onun için gitmiyor dedim
Başlık: Ynt: UART veri göndermek ?
Gönderen: makine_terbiyecisi - 15 Aralık 2017, 15:04:00
set_tris_b(0b00000010);

Bu şekilde düzenle bakalım. Burada pin_B1 rx olduğu için input olmalı. Belki sorun budur.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 15 Aralık 2017, 20:32:44
Alıntı yapılan: makine_terbiyecisi - 15 Aralık 2017, 15:04:00
set_tris_b(0b00000010);

Bu şekilde düzenle bakalım. Burada pin_B1 rx olduğu için input olmalı. Belki sorun budur.
Alakası yok "%s"  yerine "%c" yazınca veri göndermeye basladı bu sefer 34 43 gibi saçma sapan göndermeye başladı C. 8 göndermesi lazımken buffer daki veriyi neden farklı veri gidiyor olabilir?
Başlık: Ynt: UART veri göndermek ?
Gönderen: mehmet - 15 Aralık 2017, 21:06:30
Göndermeden önce bu veriyi nasıl almak istediğinizi
belirleseniz daha iyi olmaz mı?
Gönderdiğiniz veri nereden başlayacak, nerede bitecek?

Alıcı kısımın senkron olacağı bir durum vermek zorundasınız.
Veri yolu asenkron ama siz veri iletimi yaparken senkron
durumu yakalayacak bir veri bloğu yollamalısınız...
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 15 Aralık 2017, 21:40:09
Memet hocam en basta yazdıgımı burayada yazayım elimde 110 byte ascii kodlar var karşı tarafa bozulmadan bu dataları aynen iletmem lazım bu kodları com portan dinlediğim kodlar ibus hattındaki veriler bu verileri teype yollayıp teyp acılısını sağlıyorum bunu pc den yapıyorum kücük kart yapıp uartan yollayıp teyp aktif etmek istiyorum kodlar bunlar;

C8 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D8 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D 68 09 3B 23 62 30 54 45 53 54 3D 68 09 3B 23 62 30 54 45 53 54 3D
Başlık: Ynt: UART veri göndermek ?
Gönderen: mehmet - 15 Aralık 2017, 22:42:01
Yazarken de anlaşılamıyorsunuz. Noktalama işaretleri
kullansanız da söylediklerinizi anlasam?
Acele etmeden sakin sakin anlatın.
Başlık: Ynt: UART veri göndermek ?
Gönderen: omereliusuk - 16 Aralık 2017, 01:24:16
#include <16F628A.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(internal=4000000)

#use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8,stream=PORT1,errors)
volatile const int veri[]={ 
                  0xC8,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,
                  0x45,0x53,0x54,0x3D,0xD8,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,
                  0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,
                  0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,
                  0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0x68,0x09,
                  0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0x68,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,
                  0x54,0x3D};   
                       

void main()             
{                 
   while(TRUE)
   {                         
    for(int i=0;i<110;i++)
    printf("%X ",veri[i]);
    printf("\n");                       
   delay_ms(200);
   }
   }


Başlık: Ynt: UART veri göndermek ?
Gönderen: fide - 16 Aralık 2017, 09:46:31
@omereliusuk güzel program yapmış.
F628 gibi giriş seviyesi piclerle çalışırken, aynı zamanda düzgün kod yszabilmek için değişmeyecek değerlerin const olarak tanımlanması;  efektif hafıza kullanımı için önemli.
Umarım konuyu açan da aradığı cevabı bulmuştur.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 16 Aralık 2017, 10:49:19
Ömer hocam saolasın burda printf("\n"); komutu ne iş yapıyor? Ayrıca neden delay 200 ms kullandınız senkronu saglamak için mi bu süre?
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 16 Aralık 2017, 19:30:45
iyi aksamlar arkadaslar ömer arkadasımızın yazdıgı kodlar proteusda çalısıyor şöyle bir sorun var gercek devrede sacma sapan hex kodları geliyor sebebini ugrastım ama çözemedim proteus ile gerçek devre arasında neden bu kadar fark var? proteusda 110 byte buffer verisinin aynısını alıyorum gercekte sacma sapan 332 byte veri alıyorum bu farklılıgın nedeni sizce  nedir ? not: comport ayarları ile pic uart ayarları aynıdır.

proteusda okugudum kodlar;
C8 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D8 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D 68 09 3B 23 62 30 54 45 53 54 3D 68 09 3B 23 62 30 54 45 53 54 3D

buda gercek devrenin comportu ile okudugum kodlar;
F2 1E 7E 3E 8D BF 99 7B BF 9B 99 BF 93 9B BF 99 9F BF 95 97 BF 97 95 BF 95 99 BF 95 97 BF 99 77 BF 77 9F BF 9F 8D BF 99 7B BF 9B 99 BF 93 9B BF 99 9F BF 95 97 BF 97 95 BF 95 99 BF 95 97 BF 99 77 BF 77 8F BF 9F 8D BF 99 7B BF 9B 99 BF 93 9B BF 99 9F BF 95 97 BF 97 95 BF 95 99 BF 95 97 BF 99 77 BF 77 9F BF 9F 8D BF 99 7B BF 9B 99 BF 93 9B BF 99 9F BF 95 97 BF 97 95 BF 95 99 BF 95 97 BF 99 77 BF 77 9F BF 9F 8D BF 99 7B BF 9B 99 BF 93 9B BF 99 9F BF 95 97 BF 97 95 BF 95 99 BF 95 97 BF 99 77 BF 77 9F BF 9F 8D BF 99 7B BF 9B 99 BF 93 9B BF 99 9F BF 95 97 BF 97 95 BF 95 99 BF 95 97 BF 99 77 BF 77 9F BF 9F 8D BF 99 7B BF 9B 99 BF 93 9B BF 99 9F BF 95 97 BF 97 95 BF 95 99 BF 95 97 BF 99 77 BF 77 9F BF 9F 8D BF 99 7B BF 9B 99 BF 93 9B BF 99 9F BF 95 97 BF 97 95 BF 95 99 BF 95 97 BF 99 77 BF 93 8F BF 9F 8D BF 99 7B BF 9B 99 BF 93 9B BF 99 9F BF 95 97 BF 97 95 BF 95 99 BF 95 97 BF 99 77 BF 93 8F BF 9F 8D BF 99 7B BF 9B 99 BF 93 9B BF 99 9F BF 95 97 BF 97 95 BF 95 99 BF 95 97 BF 99 77 BF EB 00

buda kaynak kodum;
#include <16F628A.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(internal=4000000)
#use rs232(baud=9600,parity=E,xmit=PIN_B2,rcv=PIN_B1,bits=8,stream=PORT1,stop=1,errors)
#use fast_io(A)
#use fast_io(B)

volatile const int veri[]={
                  0xC8,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,
                  0x45,0x53,0x54,0x3D,0xD8,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,
                  0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,
                  0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,
                  0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0x68,0x09,
                  0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0x68,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,
                  0x54,0x3D};   
                       
void main()
{
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

set_tris_a(0b00010000);
set_tris_b(0b00000010);

output_a(0x00);
output_b(0x00);

int i=0;
     
     while(TRUE){
    if(i<110){
    for(i=0;i<110;i++)
    printf("%X ",veri[i]);
    printf("\n");                       
   delay_ms(200);
}}}

Başlık: Ynt: UART veri göndermek ?
Gönderen: omereliusuk - 16 Aralık 2017, 22:51:55
volatile const int veri[]={ 
                  0xC8,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,
                  0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,
                 
                  0xD8,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,
                 
                  0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,
                  0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,
                  0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,
                  0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,
                  0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,
                 
                  0x68,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,
                  0x68,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D}; 
                                 
   int i=0;
void main()             
{                 
  while(TRUE)
   {                                                     
     printf("\r");     
           
    for(int i=0;i<110;i++)                                   
    {printf(" %X",veri[i]); if(veri[i]==0x3d) printf("\r"); delay_ms(250);     }
                             
   delay_ms(2000); 
   }
   } 


proteusta bir dener misiniz. TEKERRÜR var.  bakmanızda yarar var. bir de hangi türden veri aktarılacak karakter mi ascii mi byte mı bunlar önemli. ben hexadecimal olarak aktardım. belki sizin haberleşeceğiniz ürün ascii olarak haberleşiyor.
http://slideplayer.biz.tr/slide/2676167/10/images/16/0-127+Standart+128-255+Geni%C5%9Fletilmi%C5%9F.jpg (http://slideplayer.biz.tr/slide/2676167/10/images/16/0-127+Standart+128-255+Geni%C5%9Fletilmi%C5%9F.jpg)
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 16 Aralık 2017, 23:21:26
ömer üstadım yardımların için tşk ederim pc nin comportundan okunan deger üst resimdeki pic den en altdaki resmideki gibi tx göndermem lazım son gönderdiğin kodda anlasımsız veriler geliyor proteus ile gercek devre farklı bir birini  tutmuyor.proteus ile gercek neden bir birini tutmuyor anlamıyorum.
ayrıca ilk örnek proteusda normal calısıyor ama gercek devrede farklı calısıyor mesele burda Üstad.

C8 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D8 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D D0 09 3B 23 62 30 54 45 53 54 3D 68 09 3B 23 62 30 54 45 53 54 3D 68 09 3B 23 62 30 54 45 53 54 3D

son kod ile gelen veriler
(https://i.hizliresim.com/bLmkVG.jpg)

proteusdaki gelen veriler
(https://i.hizliresim.com/kXmG8r.jpg)

dogru olan sekli burdaki gibi okumam lazım aynısı
(https://i.hizliresim.com/kXmGD7.jpg)
Başlık: Ynt: UART veri göndermek ?
Gönderen: omereliusuk - 16 Aralık 2017, 23:46:15

È  ; # b 0 T E S T =
Ğ  ; # b 0 T E S T =
Ø  ; # b 0 T E S T =
Ğ  ; # b 0 T E S T =
Ğ  ; # b 0 T E S T =
Ğ  ; # b 0 T E S T =
Ğ  ; # b 0 T E S T =
Ğ  ; # b 0 T E S T =
h  ; # b 0 T E S T =
h  ; # b 0 T E S T =
text olarak seçimi yapar mısınız? karakter haberleşiyor gibi
Başlık: Ynt: UART veri göndermek ?
Gönderen: omereliusuk - 16 Aralık 2017, 23:51:07
https://drive.google.com/open?id=1Hq059VJQbZtxOCVE-oD38FYqoljMl2tt
şu programı kullanır mısınız.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 16 Aralık 2017, 23:53:47
üstad sag taraftaki text ayrıca verdiğin link erişim engellendi uyarısı verip acılmadı.

(https://i.hizliresim.com/zJ9346.jpg)
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 17 Aralık 2017, 00:02:13
senin ilk yazdıgın kodun text gelen verisi yanlıs veri geliyor.son yazdıgın örnekdede anlamsız veriler geliyor ; # b 0 T E S T = böyle gelmesi lazımken.

(https://i.hizliresim.com/EykgOz.jpg)
Başlık: Ynt: UART veri göndermek ?
Gönderen: omereliusuk - 17 Aralık 2017, 00:08:38
while(TRUE)
   {                                                     
    for(int i=0;i<110;i++)                                   
    {printf(" %c",veri); }                         
   delay_ms(400); 
   }
şu anda aklıma başka bir şey gelmiyor. bu protokolün kullanım yerini veya kullanılan ürünü belirtirseniz daha verimli ilerleyebilirsiniz.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 17 Aralık 2017, 00:16:28
üstad araç teyp de ibus portu var simdi teyp araç dışında oldugu için teypin ibus portna C8 ile baslayan hex kodunu gönderip teyp enable yapmak için küçük bir devre yaptım pic tx portundan teyp ibus hattına c8 ile baslaya 110 byte veri göndermem lazım ilk yazdıgınız örnek proteusda istediğim gibi data gönderiyor hatasız sekilde ama gercek devreye kod yükleyip tx portunu dinleyince alakasız veriler geliyor işin içinden çıkamadııgm nokta proteusda dogru calısan kod gercek devrede anlamsız veriler geliyor tabi dogal olarak veri yanlıs geldıgı ıcın teyp enable olmuyor mesele budur üstad.
buda olmadı maglesef.
Alıntı yapılan: omereliusuk - 17 Aralık 2017, 00:08:38
while(TRUE)
   {                                                     
    for(int i=0;i<110;i++)                                   
    {printf(" %c",veri); }                         
   delay_ms(400); 
   }


Başlık: Ynt: UART veri göndermek ?
Gönderen: kudretuzuner - 17 Aralık 2017, 11:46:52
Merhaba,
Serial port utility programında,text radio butonu değil de hex butonunu işaretler misiniz?
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 17 Aralık 2017, 12:06:49
Alıntı yapılan: kudretuzuner - 17 Aralık 2017, 11:46:52
Merhaba,
Serial port utility programında,text radio butonu değil de hex butonunu işaretler misiniz?
Hocam hex seçili hali ile yukardaki resimlerde mevcut garip garip veriler geliyor gerçek devrede halbükü proteusda düzgün çalışan kod işin içinden çıkamadım use rs232 ayar kısmında atladıgım yada yanlıs yazdıgım bölüm mü var bulamadım.
Başlık: Ynt: UART veri göndermek ?
Gönderen: kudretuzuner - 17 Aralık 2017, 12:12:05
Merhaba,
Yukarıda gördüğüm "received sending "resimde,text button işaretli.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 17 Aralık 2017, 12:14:10
Hocam 2 sayfada resimler var ordan bakabilirsiniz ilginiz için tşk ederim.
Başlık: Ynt: UART veri göndermek ?
Gönderen: omereliusuk - 17 Aralık 2017, 18:11:20
eğer yanlış anlamadıysam verileri direkt pic ten bilgisayar'a aktarıyorsunuz ve öyle izliyorsunuz. pic'i programlarken ne kullanıyorsunuz. belki pic'te bir sorun olabilir. 16f628a kullanıyor olmalısınız.  ayrıca programlarken hex config kullanmalısınız. ekstra herhangi bir konfigürasyon kullanmamalısınız.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 17 Aralık 2017, 19:01:42
Pic tx portunu direk pc nin com portundan okudugum için mi farklı veriler görüyorum? Max232 gibi devre mi kullanmalıyım araya pic ile pc nin com portunun arasına o zmn veriyi düzgün okurmuyum?
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 17 Aralık 2017, 19:05:30
Pickit3 ıcsp ile programlıyorum pic smd kılıf.
Başlık: Ynt: UART veri göndermek ?
Gönderen: omereliusuk - 17 Aralık 2017, 20:54:27
Alıntı yapılan: bulut_01 - 17 Aralık 2017, 19:01:42
Pic tx portunu direk pc nin com portundan okudugum için mi farklı veriler görüyorum? Max232 gibi devre mi kullanmalıyım araya pic ile pc nin com portunun arasına o zmn veriyi düzgün okurmuyum?
böyle bir devre kurun.Max232
veya
hc05 hc06 gibi bir bluetooth module kullanabilirsiniz. bilgisayar için de bluetooth modul gerekir. veya cep telefonundan bluetooth ile izleyebilirsiniz.
arduino varsa elinizde usb-comport olarak kullanabilirsiniz.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 17 Aralık 2017, 21:00:53
Arada max232 gibi devre olmadıgı için mi mantıksız değerler görüyorum sebebi bu o zaman? Proteus ile gercek devre farklılıgı burdan geliyor sanırım.
Başlık: Ynt: UART veri göndermek ?
Gönderen: kudretuzuner - 18 Aralık 2017, 10:48:10
Merhaba,
"Arada max232 gibi devre olmadıgı için mi mantıksız değerler görüyorum sebebi bu o zaman? Proteus ile gercek devre farklılıgı burdan geliyor sanırım."
Data alış verişlerde hangi portu kullanıyorsunuz? Seri iletişimi RS232 porttan yapıyorsanız max232,USB pottan yapıyorsanız FT232R kullanmanız gerekir.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 18 Aralık 2017, 11:23:15
Hocam rs232 baglantı yapıyorum max232 ile devre kurmak lazım.
Başlık: Ynt: UART veri göndermek ?
Gönderen: dumansiz - 18 Aralık 2017, 12:50:47
@bulut_01
"ibus portu" olarak tabir ettiğiniz port hakkında biraz daha bilgi verebilir misiniz?
Referans aldığınız bir cihaz var ise o cihazın donanımını da inceleyebilirsiniz.
Burada bir "bus" hattı varsa durum farklı bir hal alabilir. MAX232 yerine "ibus" arayüzü(interface) kullanmanız gerekebilir.
Bu bus hattına bağlı diğer birimler kendi aralarında sürekli haberleşiyor olabilirler.
"Dinleme" dediğiniz şeyi nasıl yaptınız? "Logic analyzer" ile mi?
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 18 Aralık 2017, 13:01:20
Alıntı yapılan: dumansiz - 18 Aralık 2017, 12:50:47
@bulut_01
"ibus portu" olarak tabir ettiğiniz port hakkında biraz daha bilgi verebilir misiniz?
Referans aldığınız bir cihaz var ise o cihazın donanımını da inceleyebilirsiniz.
Burada bir "bus" hattı varsa durum farklı bir hal alabilir. MAX232 yerine "ibus" arayüzü(interface) kullanmanız gerekebilir.
Bu bus hattına bağlı diğer birimler kendi aralarında sürekli haberleşiyor olabilirler.
"Dinleme" dediğiniz şeyi nasıl yaptınız? "Logic analyzer" ile mi?
Üstad araba teypi araç içinde ibus haberleşerek enable oluyor I bus analyzr bir program var pc de o test kodu oluşturuyor farklı bir pc ile comport ile dinleyip hex kodlarını kopyaladım pc den seri port aracılıgıyla teypin ibus hattına gönderdiğimde kaydettiğim hex kodu teyp açılıyor bu işlemi pc değilde pic ile yapmak istedim ama kodlarda sıkıntı var pcden kayıtlı hex kodu pic ile aynısını gönderemedim. Comport ile teypin ibus hattı arasına bir direnç ve transistörlü küçük bir devre var.
Başlık: Ynt: UART veri göndermek ?
Gönderen: dumansiz - 18 Aralık 2017, 13:56:22
Bilgisayardaki dinleme yazılımı, bunun gibi birşey mi:
http://www.tessera.co.jp/board/eng/ibus/apieb2.html (http://www.tessera.co.jp/board/eng/ibus/apieb2.html)

IEBus diye birşey var:
http://www.wikizero.org/index.php?q=aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUVCdXM

https://elinux.org/images/e/e1/UPD72042.pdf

Eğer aynı şey ise iebus hakkında biraz döküman okumak gerekir.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 18 Aralık 2017, 14:02:34
Onlar değil usta serial port utility diye masa üstü pro resimdede adı yazıyor.
Başlık: Ynt: UART veri göndermek ?
Gönderen: mufitsozen - 18 Aralık 2017, 14:08:00
IBUS BMW arabalarda multimedia cihazlar icin kullanilan bir multimedia haberlesme hattidir.

@bulut_01 asagidaki link isinize yarayabilir.
    http://www.reslers.de/IBUS/         (http://www.reslers.de/IBUS/)
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 18 Aralık 2017, 15:17:24
Alıntı yapılan: mufitsozen - 18 Aralık 2017, 14:08:00
IBUS BMW arabalarda multimedia cihazlar icin kullanilan bir multimedia haberlesme hattidir.

@bulut_01 asagidaki link isinize yarayabilir.
    http://www.reslers.de/IBUS/         (http://www.reslers.de/IBUS/)
Hocam i bus analyzr programını burdan indirdim zaten programın test olarak gönderdiği kodu pic ile gönderim dedim ama olmadı kodda sıkıntılar çıktı hex olarak gönderdiğim veriler text olarak gidiyor burda takıldım. Ayrıca almanlar işi biliyor bmw şaheser gibi bir araba  :D
Diyorum bmw teypleri neden hiç çalınmıyor adamlar önlemini almışlar her konuda helal olsun.
Başlık: Ynt: UART veri göndermek ?
Gönderen: dumansiz - 18 Aralık 2017, 17:07:51
@mufitsozen in verdiği linkleri incelediniz mi?
http://www.yeint.ru/suppliers/melexis/pdf/TH3122_004.pdf (http://www.yeint.ru/suppliers/melexis/pdf/TH3122_004.pdf)
6.sayfada örnek uygulama var.

SENSE ucu ile hattı dinleyeceksiniz boş olduğunda UART'tan  veriyi göndereceksiniz.
MAX232 kullanmanıza gerek yok. TH3122 veya muadilini kullanacaksınız.
110 bytelık veri dediniz ama Aslında 11 byte uzunluğunda 10 tane paket var orada.

C8 09 3B 23 62 30 54 45 53 54 3D
D0 09 3B 23 62 30 54 45 53 54 3D
D8 09 3B 23 62 30 54 45 53 54 3D
D0 09 3B 23 62 30 54 45 53 54 3D
D0 09 3B 23 62 30 54 45 53 54 3D
D0 09 3B 23 62 30 54 45 53 54 3D
D0 09 3B 23 62 30 54 45 53 54 3D
D0 09 3B 23 62 30 54 45 53 54 3D
68 09 3B 23 62 30 54 45 53 54 3D
68 09 3B 23 62 30 54 45 53 54 3D

Her paket arasına bekleme konabilir. Her bir pakete karşı taraftan cevap gelebilir.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 18 Aralık 2017, 18:28:51
Alıntı yapılan: dumansiz - 18 Aralık 2017, 17:07:51
@mufitsozen in verdiği linkleri incelediniz mi?
http://www.yeint.ru/suppliers/melexis/pdf/TH3122_004.pdf (http://www.yeint.ru/suppliers/melexis/pdf/TH3122_004.pdf)
6.sayfada örnek uygulama var.

SENSE ucu ile hattı dinleyeceksiniz boş olduğunda UART'tan  veriyi göndereceksiniz.
MAX232 kullanmanıza gerek yok. TH3122 veya muadilini kullanacaksınız.
110 bytelık veri dediniz ama Aslında 11 byte uzunluğunda 10 tane paket var orada.

C8 09 3B 23 62 30 54 45 53 54 3D
D0 09 3B 23 62 30 54 45 53 54 3D
D8 09 3B 23 62 30 54 45 53 54 3D
D0 09 3B 23 62 30 54 45 53 54 3D
D0 09 3B 23 62 30 54 45 53 54 3D
D0 09 3B 23 62 30 54 45 53 54 3D
D0 09 3B 23 62 30 54 45 53 54 3D
D0 09 3B 23 62 30 54 45 53 54 3D
68 09 3B 23 62 30 54 45 53 54 3D
68 09 3B 23 62 30 54 45 53 54 3D

Her paket arasına bekleme konabilir. Her bir pakete karşı taraftan cevap gelebilir.
Gönderme arasında bekleme gibi bir durum yok aslında bu hex paket codu pic ile gönderemedim
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 23 Aralık 2017, 22:54:20
yardımcı olan butun arkadarlara tsk ederim uart ile teyp calıstırdım code son hali budur saolun.

#include <16F628A.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(internal=4000000)
#use rs232(baud=9600,parity=E,xmit=PIN_B2,rcv=PIN_B1,bits=8,stream=UART1,stop=0,errors)
#use fast_io(A)
#use fast_io(B)

int i=0;
int s=0,w=0;

volatile const int veri[]={ 
                  0xC8,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,
                  0x45,0x53,0x54,0x3D,0xD8,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,
                  0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,
                  0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,
                  0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0x68,0x09,
                  0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0x68,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,
                  0x54,0x3D};
                       
void main()
{
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

set_tris_a(0b00010000);
set_tris_b(0b00000010);

output_a(0x00);
output_b(0x00);

while(TRUE){
   
if(i==110){
s++;
if(s==3){
w=1;}}
   
    if(w==0){
    for(i=0;i<110;i++)
    printf("%C",veri[i]);
                         
}}}
Başlık: Ynt: UART veri göndermek ?
Gönderen: eti - 24 Aralık 2017, 01:05:06
uart tanımlaması yapıldıktan sonra
char buffer[110]={'C', '8', '0' ,'9', '3' ,'B...}
int sayac;
for (sayac=0;sayac < 110;sayac++){
   putc(buffer[sayac]);
}

tx pini çıkış olarak ayarlanmalı.
saygılar
Başlık: Ynt: UART veri göndermek ?
Gönderen: Pyrodigy - 03 Ocak 2018, 18:55:07
Konuyu Açan'A; Önerim
1- Usart ı iyi çalış nasıl gönderilir nasıl alınır. Datasheet leri çok dikkatli oku.
2- UART tan seri haberleşme ile göndereceğin verileri tek seferde gönderemezsin. Peşpeşe gönderebilir ve alırsın.Hal böyleyken peşpeşe göndereceğin dataların UART tan gittiğini ve diğer datayı sıraya koyman gerektiğini kontrol etmen gerekir. Aynı şekilde alımlarda bu şekilde yürür. Bu durumda Anahtar kelimen; Veri gönderirken PIR registerinin TXIF bitini her gönderim öncesinde yani sıradaki datayı UART a yollamadan önce kontrol etmen gerekir. Aksi halde UART hatası alırsın.
1. önerimi okurken net bir şekilde görebilirsin.
Sevgiler.
Başlık: Ynt: UART veri göndermek ?
Gönderen: Pyrodigy - 03 Ocak 2018, 21:15:31
Kesmesiz UART üzerinden Dizi Gönderimlerinde şu şekilde bir yol izlenebilir.

//*****************************************************************************
// TX SERIAL
//input:
// len: Data uzunluğu
// data: Gönderilecek dizi
//Örnek:
// unsigned int8 Send_Zeros[3]={0x00,0x01,0x02}; //UART Hattına Gönderilecek Dizi örneği 3 byte
//
// TX_Serial (sizeof(Send_zeros),Send_Zeros);
//*****************************************************************************
void TX_Serial(unsigned int8 len, unsigned int8* data)
{
unsigned int8 pStr;
pStr = 0;
   while (pStr!=len)
   {       // dizi gönder
        while (TXIF == 0)
        {;}     //  bekle
        delay_cycles( 10 );    // 10xNOP
        TXREG = data[pStr++]; //  karakter gönder
    }     
}
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 04 Ocak 2018, 08:39:14
Alıntı yapılan: Pyrodigy - 03 Ocak 2018, 21:15:31
Kesmesiz UART üzerinden Dizi Gönderimlerinde şu şekilde bir yol izlenebilir.

//*****************************************************************************
// TX SERIAL
//input:
// len: Data uzunluğu
// data: Gönderilecek dizi
//Örnek:
// unsigned int8 Send_Zeros[3]={0x00,0x01,0x02}; //UART Hattına Gönderilecek Dizi örneği 3 byte
//
// TX_Serial (sizeof(Send_zeros),Send_Zeros);
//*****************************************************************************
void TX_Serial(unsigned int8 len, unsigned int8* data)
{
unsigned int8 pStr;
pStr = 0;
   while (pStr!=len)
   {       // dizi gönder
        while (TXIF == 0)
        {;}     //  bekle
        delay_cycles( 10 );    // 10xNOP
        TXREG = data[pStr++]; //  karakter gönder
    }     
}


Ben bu dili bilmiyorum son yazdıgım kod sorunsuz çalışıyor hata ile karşılaşmadım.
Başlık: Ynt: UART veri göndermek ?
Gönderen: omereliusuk - 05 Ocak 2018, 00:36:22
#include <16F628A.h>
#use delay(internal=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8,stream=PORT1,errors)

#define maxLenght 110
int startTx=0;
int stopTx=10;
volatile const int veri[maxLenght]={
                  0xC8,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,
                  0x45,0x53,0x54,0x3D,0xD8,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,
                  0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,
                  0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,
                  0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0x68,0x09,
                  0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0x68,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,
                  0x54,0x3D};

#INT_TBE
void  TBE_isr(void)
{
  if((startTx++)<stopTx)printf("%c",veri[startTx-1]);
   if(startTx==stopTx)disable_interrupts(int_tbe);
}

#INT_RDA
void  RDA_isr(void)
{

}

void main()
{

   enable_interrupts(INT_TBE);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

   while(TRUE)
   {
if(!input(pin_b0)){while(!input(pin_b0));startTx=0;stopTx=10;enable_interrupts(int_tbe);}
   }
}

startTx=0;stopTx=10;enable_interrupts(int_tbe);
bu kodu her gördüğünde yeniden veri aktarımına başlayacak. sona gelince bitirecek. bu arada başka işlerle uğraşabileceksiniz. ben bunu b0 portuna bağladım.
Başlık: Ynt: UART veri göndermek ?
Gönderen: bulut_01 - 05 Ocak 2018, 08:22:29
Alıntı yapılan: omereliusuk - 05 Ocak 2018, 00:36:22
#include <16F628A.h>
#use delay(internal=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8,stream=PORT1,errors)

#define maxLenght 110
int startTx=0;
int stopTx=10;
volatile const int veri[maxLenght]={
                  0xC8,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,
                  0x45,0x53,0x54,0x3D,0xD8,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,
                  0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,
                  0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,
                  0x54,0x45,0x53,0x54,0x3D,0xD0,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0x68,0x09,
                  0x3B,0x23,0x62,0x30,0x54,0x45,0x53,0x54,0x3D,0x68,0x09,0x3B,0x23,0x62,0x30,0x54,0x45,0x53,
                  0x54,0x3D};

#INT_TBE
void  TBE_isr(void)
{
  if((startTx++)<stopTx)printf("%c",veri[startTx-1]);
   if(startTx==stopTx)disable_interrupts(int_tbe);
}

#INT_RDA
void  RDA_isr(void)
{

}

void main()
{

   enable_interrupts(INT_TBE);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

   while(TRUE)
   {
if(!input(pin_b0)){while(!input(pin_b0));startTx=0;stopTx=10;enable_interrupts(int_tbe);}
   }
}

startTx=0;stopTx=10;enable_interrupts(int_tbe);
bu kodu her gördüğünde yeniden veri aktarımına başlayacak. sona gelince bitirecek. bu arada başka işlerle uğraşabileceksiniz. ben bunu b0 portuna bağladım.

Eyw saol üstad farklı ve güzel yazım şekli her örnekte yeni birseyler ögreniyoruz.