Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <pic.h>
- #include "delay.h"
- #define brisi_flag timer_flag=0
- unsigned char timer;
- unsigned char impuls;
- unsigned char ton_koji_ne_svira;
- static bit disable @ (unsigned)&PORTA*8+4;
- static bit izlaz @ (unsigned)&PORTA*8+1;
- static bit izlaz_inv @ (unsigned)&PORTA*8+0;
- static unsigned char stanja @ 0x2e;
- static bit stanje_izlaza @ (unsigned)&stanja*8+1;
- static bit timer_flag @ (unsigned)&INTCON*8+2;
- void
- DelayMs_2(unsigned char cnt)
- {
- unsigned char i;
- do { asm("CLRWDT");
- if(ton_1)
- return;
- i = 4;
- do {
- DelayUs(250);
- } while(--i);
- } while(--cnt);
- }
- void
- DelayMs(unsigned char cnt)
- {
- unsigned char i;
- do { asm("CLRWDT");
- i = 4;
- do {
- DelayUs(250);
- } while(--i);
- } while(--cnt);
- }
- void ton_1_2(unsigned char onaj_drugi_ton)
- {
- izlaz=0;
- izlaz_inv=1;
- stanje_izlaza=0;
- TMR0=timer;
- ton_1_2_start:
- brisi_flag;
- disable=0;
- ton_1_2_sviranje:
- while(timer_flag==0)
- {
- if((TMR0-timer)>=impuls)
- {izlaz=0;
- izlaz_inv=0;
- }
- }
- brisi_flag;
- TMR0=timer;
- if(stanje_izlaza==0)
- izlaz_inv=1;
- else
- izlaz=1;
- stanje_izlaza=stanje_izlaza+1;
- if((PORTA&0x0c)==onaj_drugi_ton)
- return;
- asm("CLRWDT");
- goto ton_1_2_sviranje;
- }
- void main()
- {
- CMCON=0x07;//portA su normalni ulazi (za 16F628A)
- TRISA=0x0c;
- TRISB=0xff;
- disable=1;
- OPTION=0x81; //WDT na 18 msec, preset TMR0 sa 4
- izlaz=0;
- izlaz_inv=0;
- timer=107;
- impuls=0x1d;
- ton_1_2(ton_koji_ne_svira);
- }
Advertisement
Add Comment
Please, Sign In to add comment