Programování AT89S52 v Codevision AVR
Moderátor: Moderátoři
Programování AT89S52 v Codevision AVR
Neví náhodou někdo jestli v prostředí Codevision AVR lze programovat i obvod AT89S52 ? Při nastavování parametrů projektu není tento procesor v menu...
Díky za odpovědi.
Díky za odpovědi.
Jo, v Codevision includuješ knihovnu Delay.h a napíšeš jen delay_ms nebo delay_us. Ovšem v tu chvíli procesor zahálí a nelze ho využít, takže je lepší použít ten Timer nebo nějaké počítadlo (pokud nepotřebuješ přílišnou přesnost, tak třeba počítat průběhy programu) a nezabereš si procesor jen na čekání.
Ale to čekání je v Codevision potřeba pro další knihovny, třeba pro inicializaci LCD displeje atd ...
Ale to čekání je v Codevision potřeba pro další knihovny, třeba pro inicializaci LCD displeje atd ...
Wizard neni spatnej, ale nechapu proc tu inicializaci nableje do mainu a ne do nejake zvlastni funkce.
Krom to, az si napises na periferie, co pouzivas, driver/knihovnu, nebude ten wizard krom IO linek temer potreba.
Knihoven tam zas takova paleta neni a, uprimne receno, nevzpominam si, ze bych z toho pouzil nekdy jine nez standarni ceckovske. Vsechno ostatni jsem vzdy dopsal.
Preklady do asm jsou nekde dost hrozne, kdyz clovek honi cas, musi se koukat, co z toho vypadlo.
Prelozit:
register unsigned char c;
register unsigned int i;
....
....
c=i>>8;
....
....
tak, ze se zavola shiftovaci funkce s parametrem 8.... hmm.
. Mozna uz to ted vylepsili...
ale alespon to funguje na rozdil od:
#pragma warn-
if(neco)
#pragma warn+
{ neco....
pragmy to takhle kupodivu skousne, ale if() to prelozi jako by za nim byl strednik
nebo mame:
typedef struct
{
unsigned char sec;
unsigned char min;
unsigned char hr;
unsigned char day;
unsigned char mon;
unsigned char dow;
unsigned char year;
} time_t;
#define RTC_size 7
char RTC[RTC_size]={0x00,0x49,0x17,0x30,0x10,0x06,0x10};
time_t rtc_backup;
a
*( (time_t*) (RTC) )=rtc_backup;
to prelozi tak, ze to presune jeden bajt....
Pak se v tom paradne programuje....![Cry :cry:](./images/smilies/icon_crying.gif)
Krom to, az si napises na periferie, co pouzivas, driver/knihovnu, nebude ten wizard krom IO linek temer potreba.
Knihoven tam zas takova paleta neni a, uprimne receno, nevzpominam si, ze bych z toho pouzil nekdy jine nez standarni ceckovske. Vsechno ostatni jsem vzdy dopsal.
Preklady do asm jsou nekde dost hrozne, kdyz clovek honi cas, musi se koukat, co z toho vypadlo.
Prelozit:
register unsigned char c;
register unsigned int i;
....
....
c=i>>8;
....
....
tak, ze se zavola shiftovaci funkce s parametrem 8.... hmm.
![Shocked 8O](./images/smilies/icon_eek.gif)
ale alespon to funguje na rozdil od:
#pragma warn-
if(neco)
#pragma warn+
{ neco....
pragmy to takhle kupodivu skousne, ale if() to prelozi jako by za nim byl strednik
![Sad :(](./images/smilies/icon_sad.gif)
nebo mame:
typedef struct
{
unsigned char sec;
unsigned char min;
unsigned char hr;
unsigned char day;
unsigned char mon;
unsigned char dow;
unsigned char year;
} time_t;
#define RTC_size 7
char RTC[RTC_size]={0x00,0x49,0x17,0x30,0x10,0x06,0x10};
time_t rtc_backup;
a
*( (time_t*) (RTC) )=rtc_backup;
to prelozi tak, ze to presune jeden bajt....
Pak se v tom paradne programuje....
![Cry :cry:](./images/smilies/icon_crying.gif)
de omnibus dubitandum est