Guest User

Untitled

a guest
Feb 18th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.18 KB | None | 0 0
  1. #include <REGX51.H>
  2. #include <absacc.h>
  3.  
  4.  
  5. #define CSDS 0xF030
  6. #define CSDB 0xF038
  7.  
  8. #define CSKB0 0xF021
  9. #define CSKB1 0xF022
  10.  
  11. unsigned char j,k;
  12. unsigned char tablica[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};// od 0 do 9
  13. unsigned char wskaznik=1;
  14. unsigned char index=0;
  15. unsigned int second=00;
  16. unsigned int minute=00;
  17. unsigned int hour=00;
  18. int dot=128;
  19. int i;
  20. char w;
  21. int g;
  22. int pomocnicza;
  23. int msec_50;
  24.  
  25.  
  26. //sprawdzile funkcje odpowiedzialna za wybor miejsca i liczby - dziala OK. MJ
  27. //mechanizm dzialania zegarka powinien byc ok MJ
  28.  
  29.  
  30. //DO ZROBIENIA
  31. //plik naglowkowy *.c, wywalic jakas funkcje do niego i zaimportowac go
  32. //zrobic nastawienie zegarka
  33. //dobrac odpowiedni czas
  34. //poprawic ewentualne bledy
  35.  
  36. char choice(int i); //zasygnalizowanie, ze w programie uzywamy takie funkcje/procedury MJ
  37. char wybormiejsca(char w);
  38. void wyswietl(int i, char w);
  39. void wyswietl2(int i, char w);
  40. void nastaw(void);
  41.  
  42.  
  43.  
  44. void zegar(void)
  45. {
  46. //second++;
  47. if(second==60)
  48. {
  49. minute++;
  50. second=00;
  51. }
  52. if(minute==60)
  53. {
  54. hour++;
  55. minute=00;
  56. }
  57. if(hour==24)
  58. {
  59. hour=00;
  60. minute=00;
  61. second=00;
  62. }
  63. i=second%10;
  64. pomocnicza = second/10;
  65. wyswietl(i,1);
  66. wyswietl(pomocnicza,2);
  67. i=minute%10;
  68. pomocnicza = minute/10;
  69. if ((second%2)==0)
  70. wyswietl2(i,3); else wyswietl(i,3);
  71. wyswietl(pomocnicza,4);
  72. i=hour%10;
  73. pomocnicza = hour/10;
  74. if ((second%2)==0)
  75. wyswietl2(i,5); else wyswietl(i,5);
  76. wyswietl(pomocnicza,6);
  77. }
  78.  
  79. void timer0() interrupt 1
  80. {
  81. msec_50-=1;
  82. if (!msec_50)
  83. {
  84. TH0=256-180;
  85. msec_50=20;
  86. P1=P1^0x80; // co 20 przerwan zmien stan diody
  87. second++;
  88. }
  89.  
  90.  
  91. }
  92.  
  93. void timer1() interrupt 3
  94. {
  95. TH1=0xF8;
  96. TL1=0x30;
  97.  
  98. zegar();
  99.  
  100.  
  101.  
  102.  
  103. }
  104.  
  105. void main(void)
  106. { nastaw();
  107. msec_50=20;
  108.  
  109. TMOD=0x01; //16bitowy tryb timera
  110. //TH0=0x3C; //odpowiedzialne za odpowidnie zliczanie 50 ms
  111. //TL0=0xB0; //odpowiedzialne za odpowidnie zliczanie 50 ms
  112. EA=1; //zezwolenie globalne na przerwania
  113. ET0=1; //zezwolenie na przerwania timera0
  114. TR0=1; //start timera
  115. ET1=1; //zezwolenie na przerwania timera1
  116. TR1=1; //start timera
  117.  
  118. while(1);
  119. }
  120.  
  121.  
  122. void wyswietl(int i, char w) //zmienna w uzywana przy wyborze miejsca wyswietlania, zmienna i uzywana przy wyborze liczby wyswietlanej MJ
  123. {
  124. P1_6=1;
  125. XBYTE[CSDS] = wybormiejsca(w);
  126. XBYTE[CSDB] = choice(i);
  127. P1_6=0;
  128. }
  129.  
  130. void wyswietl2(int i, char w) //zmienna w uzywana przy wyborze miejsca wyswietlania, zmienna i uzywana przy wyborze liczby wyswietlanej MJ
  131. {
  132. P1_6=1;
  133. XBYTE[CSDS] = wybormiejsca(w);
  134. XBYTE[CSDB] = (choice(i))|dot;
  135. P1_6=0;
  136. }
  137.  
  138. void nastaw(void)
  139. {
  140. while(k!=127)
  141. {
  142. while(1)
  143. {
  144. if ((XBYTE[CSKB1] < 255) || (XBYTE[CSKB0]<255))
  145. {
  146. j=XBYTE[CSKB0];
  147. k=XBYTE[CSKB1];
  148. // if (k==191) {dioda = 1; ET0=0;} // gdy naciskamy Esc dioda gasnie || ESC 10111111
  149. // if (k==127) {dioda = 0; ET1=1;} // gdy naciskamy Enter dioda sie wlacza || ENTER 01111111
  150. if (j==253){second++;} // nacisnieto 1
  151. if (j==251){minute++;} // nacisnieto 2
  152. if (j==247){hour++;} // nacisnieto 3
  153. /*if (j==239){klawisz=4;} // nacisnieto 4
  154. if (j==223){klawisz=5;} // nacisnieto 5
  155. if (j==191){klawisz=6;} // nacisnieto 6
  156. if (j==127){klawisz=7;} // nacisnieto 7
  157. if (k==254){klawisz=8;} // nacisnieto 8
  158. if (k==253) {klawisz=9;} // nacisnieto 9 */
  159. }
  160. if(second==60)
  161. {
  162. minute++;
  163. second=00;
  164. }
  165. if(minute==60)
  166. {
  167. hour++;
  168. minute=00;
  169. }
  170. if(hour==24)
  171. {
  172. hour=00;
  173. minute=00;
  174. second=00;
  175. }
  176. i=second%10;
  177. pomocnicza = second/10;
  178. wyswietl(i,1);
  179. wyswietl(pomocnicza,2);
  180. i=minute%10;
  181. pomocnicza = minute/10;
  182. if ((second%2)==0)
  183. wyswietl2(i,3); else wyswietl(i,3);
  184. wyswietl(pomocnicza,4);
  185. i=hour%10;
  186. pomocnicza = hour/10;
  187. if ((second%2)==0)
  188. wyswietl2(i,5); else wyswietl(i,5);
  189. wyswietl(pomocnicza,6);
  190. }
  191.  
  192.  
  193. }
  194. }
  195.  
  196. char wybormiejsca(char w)
  197. {
  198. switch(w)
  199. {
  200. case 1:
  201. wskaznik=1;
  202. return wskaznik;
  203. break;
  204. case 2:
  205. wskaznik=1;
  206. wskaznik=wskaznik<<1;
  207. return wskaznik;
  208. break;
  209. case 3:
  210. wskaznik=1;
  211. wskaznik=wskaznik<<2;
  212. return wskaznik;
  213. break;
  214. case 4:
  215. wskaznik=1;
  216. wskaznik=wskaznik<<3;
  217. return wskaznik;
  218. break;
  219. case 5:
  220. wskaznik=1;
  221. wskaznik=wskaznik<<4;
  222. return wskaznik;
  223. break;
  224. case 6:
  225. wskaznik=1;
  226. wskaznik=wskaznik<<5;
  227. return wskaznik;
  228. break;
  229. default:
  230. break;
  231. }
  232. }
  233.  
  234. char choice(int i)
  235. {
  236. switch(i)
  237. {
  238. case 1:
  239. return tablica[1];
  240. break;
  241. case 2:
  242. return tablica[2];
  243. break;
  244. case 3:
  245. return tablica[3];
  246. break;
  247. case 4:
  248. return tablica[4];
  249. break;
  250. case 5:
  251. return tablica[5];
  252. break;
  253. case 6:
  254. return tablica[6];
  255. break;
  256. case 7:
  257. return tablica[7];
  258. break;
  259. case 8:
  260. return tablica[8];
  261. break;
  262. case 9:
  263. return tablica[9];
  264. break;
  265. case 0:
  266. return tablica[0];
  267. break;
  268. default:
  269. break;
  270. }
  271.  
  272. }
Add Comment
Please, Sign In to add comment