Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /***********************BIBLIOTEKI*******************************/
- #include "reg1210.h"
- /****************************************************************/
- /* */
- /* WAŻNE */
- /* USTAWIĆ XTAL = 12.0 */
- /* */
- /****************************************************************/
- /***********************DEFINICJE********************************/
- #define TRUE 1
- #define FALSE 0
- #define INTERRUPTS 1
- unsigned char _20_MS_FLAG;
- unsigned int _20_MS_COUNTER;
- /***********************FUNKCJA PRZERWANIA***********************/
- void Timer0Int() interrupt 1
- {
- TH0 = 0xFC;
- TL0 = 0x18;
- _20_MS_COUNTER++;
- if (_20_MS_COUNTER == 20)
- {
- _20_MS_FLAG = TRUE;
- _20_MS_COUNTER = 0;
- }
- }
- void rr(int *value)
- {
- if (*value != 0x01)
- {
- int rotated_value;
- rotated_value = *value >> 1;
- *value = rotated_value;
- }
- else
- {
- *value = 0x80;
- }
- }
- /***********************PETLA GLÓWNA PROGRAMU********************/
- void main()
- {
- int A;
- int _1_SEC_FLAG;
- int _SEC_COUNTER;
- if (INTERRUPTS)
- {
- //blok inicjalizacji
- ET0 = 1; //aktywacja przerwania od timera TR0
- TMOD = 0x01; //przestawienie timera 0 w tryb 16-bitowy
- TR0 = 1; //aktywacja timera 0
- EA = 1; //aktywacja wektora przerwan
- TH0 = 0xFC; //napelnienie rejestru zegara
- TL0 = 0x18; //napelnienie rejestru zegara
- _20_MS_COUNTER = 0;
- _1_SEC_FLAG = 0;
- _SEC_COUNTER = 0;
- A = 0x80;
- P0 = A;
- }
- //Petla glówna programu
- while (1)
- {
- if (_20_MS_FLAG == TRUE)
- {
- _1_SEC_FLAG++;
- if (_1_SEC_FLAG == 50)
- {
- rr(&A);
- P0 = A;
- _1_SEC_FLAG = 0;
- _SEC_COUNTER++;
- }
- _20_MS_FLAG = FALSE;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement