Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Pong na przerwaniach, zmiana co 50ms
- #include <8051.h>
- #define TIM 19456 // 50ms
- #define LEDS P1 // port do diod
- unsigned char acc, flag; // flag = 0 - lewo, flag = 1 - prawo
- void timer0(void) __interrupt(1) __using(1){
- // Lewo czy prawo?
- if(flag)
- acc = acc >> 1;
- else
- acc = acc << 1;
- // Jeżeli pali się ostatnia dioda z lewej lub z prawej:
- if(acc == 128 || acc == 1)
- flag = !flag;
- LEDS = acc; // wartość zostaje wrzucona na port diod
- // Ponownie wrzucam wartości od których ma zliczać Timer 0:
- TH0 = TIM / 256; // 4 starsze bity
- TL0 = TIM % 256; // 4 młodsze bity
- return;
- }
- int main(void){
- acc = 1; // wartość wrzucana na port diod
- flag = 0; // lewo czy prawo, lewo = 0, prawo = 1
- LEDS = 1; // zaczynam od zapalenia pierwszej diody z prawej
- // Timer:
- TH0 = TIM / 256; // 4 starsze bity
- TL0 = TIM % 256; // 4 młodsze bity
- TMOD = 1; // Timer 0 w trybie 1
- TR0 = 1; // włączam Timer 0
- // Przerwania:
- EA = 1; // włączenie przerwań
- ET0 = 1 // włączenie przerwania Timera 0
- while(1){
- // nieskończona pętla, przerywana przerwaniami
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment