Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <REGX52.H> //biblioteka sa definicijama registara
- #define F_CLK 18432000
- #define F_INT 1000
- typedef unsigned char byte;
- unsigned char xdata CRV_PREK _at_ 0x8000;
- unsigned char xdata ZELENE _at_ 0x8001;
- unsigned char xdata ZUTE _at_ 0x8002;
- byte lut_crvene[6] = {~0x00, ~0x80, ~0x80, ~0xa0, ~0xa0, ~0xa0};
- byte lut_zuteee[6] = {~0x40, ~0x00, ~0x40, ~0x00, ~0x40, ~0xa0};
- byte lut_zelene[6] = {~0x00, ~0x20, ~0x20, ~0xa0, ~0xa0, ~0xa0};
- unsigned long sys_time = 0;
- void timer0_ISR() interrupt 1
- {
- sys_time++;
- TR0 = 0; //tajmer 0 OFF
- TH0 = 0xFA; //ucitavanje pocetne vrednosti
- TL0 = 0x00;
- TR0 = 1; //tajmer 0 ON
- }
- unsigned long millis()
- {
- unsigned long tmp;
- EA = 0; //zabrana prekida
- tmp = sys_time; //ocitavanje vremena
- EA = 1; //dozvola prekida
- return tmp;
- }
- void delay_ms(unsigned long d)
- {
- unsigned long t0 = millis();
- while(millis() - t0 < d);
- }
- void ispisi_broj(byte br) {
- CRV_PREK = lut_crvene[br-1];
- ZELENE = lut_zelene[br-1];
- ZUTE = lut_zuteee[br-1];
- }
- void main()
- {
- unsigned long n = 0;
- byte DOZVOLA;
- //inicijalizacija tajmera 0:
- TMOD = 0x01; //tajmer 2 -> 16-bitni mod
- ET0 = 1; //dozvola prekida tajmera 0
- TR0 = 1; //tajmer 0 ON
- EA = 1; //dozvola prekida
- while(1)
- {
- DOZVOLA = ~CRV_PREK & 0x80;
- if(DOZVOLA) {
- ispisi_broj((n % 6) + 1);
- delay_ms(15000);
- n++;
- } else {
- ispisi_broj(((n-1) % 6) + 1);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement