Siwieje przez 8252
Masz problem? Zapytaj na forum elektroda.pl
From: "angel" <mmxREMOVEME_at_nospam_szas.z.pl>
Subject: Siwieje przez 8252
Date: Fri, 23 Apr 2004 09:50:41 +0200
Oto program ktory nie dziala: (ponizej bedzie program ktory dziala)
#include <REG8252.H>
#include <stdio.h>
void rs(char c)
{
while(!TI);
TI=0;
SBUF = c;
}
void pisznars (char *znak) {
while( *znak ) {
rs(*znak);
znak++;
}
}
void main(void)
{
int x = 10000;
while(1) // loop
{
while(x > 1) // 10000
{
P1 = 0x0f; // PORT1 to 00001111
x--; // dec. x
}
while(x < 10000) // 10000
{
P1 = 0x00; // PORT1 to 00000000
x++; // inc. x
}
TMOD=0x20;
TH1=0xFD;
SCON=0x50;
TR1=1;
SBUF = "O";
TI=0;
pisznars("Ka");
}
}
----------------------------------------------
Ten dziala:
#include <REG8252.H>
#include <stdio.h>
void main(void)
{
int x = 10000;
while(1) // loop
{
while(x > 1) // 10000
{
P1 = 0x0f; // PORT1 to 00001111
x--; // dec. x
}
while(x < 10000) // 10000
{
P1 = 0x00; // PORT1 to 00000000
x++; // inc. x
}
TMOD=0x20;
TH1=0xFD;
SCON=0x50;
TR1=1;
SBUF = "O";
TI=0;
}
}
Miga diodami i wyswietla znak na RS ktory rzeczywiscie sie pokazuje.
Gdy laduje pierwszy program dioda nawet nie mrugnie, gdy laduje drugi migaja
i pisze.
Co sie do diabla dzieje ?
Pozdrawiam,
Mariusz
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.rmf.pl!poznan.rmf.pl!news.man.poznan.pl!news.task.gda.pl!not-for-mai
From: B <bz_at_nospam_onet.pl>
Subject: Re: Siwieje przez 8252
Date: Fri, 23 Apr 2004 10:32:37 +0200
Program nie wychodzi z petli while w funkcji rs().
Tam powinno byc chyba tak
void rs(char c)
{
TI=0; // Skasownie flagi (na wszelki wypadek)
SBUF=c; // Wrzucenie znaku do wyslania.
while(!TI); // Czekamy na flage po wyslaniu znaku.
TI=0; // Skasowanie flagi
}
Oczywiscie zakladam ze przerwanie od UART jest zablokowane, bo w przeciwnym
razie program popedzi w maliny.
angel wrote:
Oto program ktory nie dziala: (ponizej bedzie program ktory dziala)
#include <REG8252.H>
#include <stdio.h>
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!news.nask.pl!news-stoc.telia.net!217.209.241.210.MISMATCH!news-stod.telia.net!telia.net!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "angel" <mmxREMOVEME_at_nospam_szas.z.pl>
Subject: Re: Siwieje przez 8252
Date: Fri, 23 Apr 2004 10:33:22 +0200
Losisko ze mnie wsadzilem rejestry i timer w petle, ale po wyjeciu ich przed
while nic sie nie poprawilo.
M.
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.ceti.pl!newsfeed.tpinternet.pl!news.onet.pl!lublin.pl!uw.edu.pl!news.pw.edu.pl!not-for-mai
From: "Zbych" <god_at_nospam_heaven.org>
Subject: Re: Siwieje przez 8252
Date: Fri, 23 Apr 2004 13:26:14 +0200
void rs(char c)
{
while(!TI);
TI=3D0;
SBUF =3D c;
}
Tu jest OK.
void main(void)
{
TMOD=3D0x20;
TH1=3D0xFD;
SCON=3D0x50;
TR1=3D1;
TI=3D1;
^^^^^^^^^^
Po skonfigurowaniu portu szeregowego powiniene=B6 ustawi=E6 flag=EA TI, =
bo inaczej
nie rozpoczniesz transmisji.
pisznars("Ka");
while(1);
}
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.rmf.pl!poznan.rmf.pl!news.man.poznan.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai