Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<REGX52.H>
- #define F_CLK 18432000
- #define F_INT 1000
- typedef unsigned char byte;
- byte xdata LED_PREK _at_ 0x8000;
- byte xdata ZUTA _at_ 0x8002;
- byte xdata ZELENA _at_ 0x8001;
- byte xdata PLAVA _at_ 0x8003;
- byte i=0;
- byte j=0;
- byte LEDS=0x01;
- byte prek;
- byte clear=0xff;
- unsigned long sys_time = 0;
- void timer2_ISR() interrupt 5
- {
- sys_time++;
- TF2 = EXF2 = 0;
- }
- 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 boja(byte x,byte y)
- {
- switch((~x)&0x03)
- {
- case 0:
- {
- LED_PREK=y;
- ZUTA=clear;
- ZELENA=clear;
- PLAVA=clear;
- }
- break;
- case 1:
- {
- ZUTA=y;
- LED_PREK=clear;
- ZELENA=clear;
- PLAVA=clear;
- }
- break;
- case 2:
- {
- ZELENA=y;
- LED_PREK=clear;
- ZUTA=clear;
- PLAVA=clear;
- }
- break;
- case 3:
- {
- PLAVA=y;
- LED_PREK=clear;
- ZUTA=clear;
- ZELENA=clear;
- }
- break;
- }
- }
- void vreme(byte x)
- {
- byte k=((~x)&0xc0)>>6;
- switch(k)
- {
- case 0:
- delay_ms(500);
- break;
- case 1:
- delay_ms(1000);
- break;
- case 2:
- delay_ms(2000);
- break;
- case 3:
- delay_ms(4000);
- break;
- }
- }
- void main()
- {
- RCAP2H = (-(F_CLK / (12 * F_INT))) >> 8;
- RCAP2L = (-(F_CLK / (12 * F_INT))) & 0xff;
- T2CON = 0x00; //tajmer 2 -> 16-bitni auto-reload
- ET2 = 1; //dozvola prekida tajmera 2
- TR2 = 1;
- EA=1;
- prek=(~LED_PREK);
- while(1)
- {
- while(i!=7)
- {
- prek=(~LED_PREK);
- LEDS=(LEDS<<1);
- boja(prek,(~LEDS));
- vreme(prek);
- i++;
- }
- i=0;
- while(j!=7)
- {
- prek=(~LED_PREK);
- LEDS=(LEDS>>1);
- boja(prek,(~LEDS));
- vreme(prek);
- j++;
- }
- j=0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment