Guest User

Untitled

a guest
Apr 13th, 2014
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.92 KB | None | 0 0
  1. ;PORT ADDRESS
  2. ;P0 EQU 0x80
  3. P0_0 EQU 0x80
  4. P0_1 EQU 0x81
  5. P0_2 EQU 0x82
  6. P0_3 EQU 0x83
  7. P0_4 EQU 0x84
  8. P0_5 EQU 0x85
  9. P0_6 EQU 0x86
  10. P0_7 EQU 0x87
  11. ;P1 EQU 0x90
  12. P1_0 EQU 0x90
  13. P1_1 EQU 0x91
  14. P1_2 EQU 0x92
  15. P1_3 EQU 0x93
  16. P1_4 EQU 0x94
  17. P1_5 EQU 0x95
  18. P1_6 EQU 0x96
  19. P1_7 EQU 0x97
  20. ;P2 EQU 0xA0
  21. P2_0 EQU 0xA0
  22. P2_1 EQU 0xA1
  23. P2_2 EQU 0xA2
  24. P2_3 EQU 0xA3
  25. P2_4 EQU 0xA4
  26. P2_5 EQU 0xA5
  27. P2_6 EQU 0xA6
  28. P2_7 EQU 0xA7 ;P3 EQU 0xB0
  29. P3_0 EQU 0xB0
  30. P3_1 EQU 0xB1
  31. P3_2 EQU 0xB2
  32. P3_3 EQU 0xB3
  33. P3_4 EQU 0xB4
  34. P3_5 EQU 0xB5
  35. P3_6 EQU 0xB6
  36. P3_7 EQU 0xB7
  37.  
  38.  
  39.  
  40. FLAGS DATA 20H
  41. LASTREAD BIT FLAGS.0
  42. BITCNT DATA 21H
  43. BYTECNT DATA 22H
  44. SECS DATA 24H
  45. MINS DATA 25H
  46. HRS DATA 26H
  47. DATE DATA 28H
  48. MONTH DATA 29H
  49. YEAR DATA 2AH
  50. CONTROL DATA 2BH
  51. ALM_HOUR DATA 2CH
  52. ALM_MIN DATA 2DH
  53. ALM_CNTRL DATA 2EH
  54.  
  55. LCD_DATA EQU 0A0H
  56. LCD_DB0 EQU 0A0H
  57. LCD_DB1 EQU 0A1H
  58. LCD_DB2 EQU 0A2H
  59. LCD_DB3 EQU 0A3H LCD_DB4 EQU 0A4H
  60. LCD_DB5 EQU 0A5H
  61. LCD_DB6 EQU 0A6H
  62. LCD_DB7 EQU 0A7H
  63. LCD_RS EQU 0B0H
  64. LCD_RW EQU 0B1H
  65. LCD_E EQU 0B6H
  66.  
  67. UP_BTTN BIT 0xB1
  68. DOWN_BTTN BIT 0xB2
  69. ALARM_ON BIT 0x92
  70. _12_24 BIT 0x93
  71. T2EX BIT 0x91
  72. SET_HRS_BT BIT 0x80
  73. SET_MINS_BT BIT 0x81
  74. SET_SECS_BT BIT 0x82
  75. SET_DATES_BT BIT 0x83
  76. SET_MONTHS_BT BIT 0x84
  77. SET_YEARS_BT BIT 0x85
  78. ALARM_SET_HOURS_BT BIT 0x86
  79. ALARM_SET_MINS_BT BIT 0x87
  80.  
  81. BUZZER BIT 0x94
  82.  
  83. CONFIG EQU 38H
  84. ENTRYMODE EQU 6
  85.  
  86. OFFCUR EQU 0AH
  87. BLINKCUR EQU 09H
  88.  
  89. CLRDSP EQU 01H
  90. ONDSP EQU 0CH
  91. IEN0 EQU 0xA8
  92. MOV R0,00000000b
  93. MOV IEN0,@R0
  94.  
  95. IPL0 EQU 0xB8
  96. MOV R0,00000101b
  97. MOV IPL0,@R0
  98.  
  99. IPH0 EQU 0xB7
  100. MOV R0,00000101b
  101. MOV IPH0,@R0
  102.  
  103. sbit TimerFlag2 = 0c8h^7 ;Naming the TF2 bit in the T2CON register, this register handles timer2
  104.  
  105. delay1sec:
  106. MOV 0cch,#0H ;Setting TL2 with 00001110b
  107. MOV 0cdh,#0H ;Setting TH2 with whatever we want
  108. MOV 0cah,#0H ;Setting RCAP2L
  109. MOV 0cbh,#0H ;Setting RCAP2H
  110. MOV 0c9h,#1H ;To set if the counter counts up or down
  111. MOV R0,#0xA8 ;
  112.  
  113. X2: MOV 0c8h,#4H ; Timer 2 is set
  114. X3: JNB TimerFlag2,X3 ;Counter has started and it will wait till it reaches FFFFh, and after that it will come out of
  115. the loop
  116. CPL TimerFlag2
  117. MOV 0c8h,#0H ;Disable timer2
  118. DJNZ R0, X2 ;
  119. ACALL TIME_UPDATE_SEC
  120.  
  121. RET
  122. START:
  123. MOV YEAR,#97H ; SET YEAR TO 1997 ON BOOT
  124. MOV MONTH,#01H ; SET MONTH TO 01 ON BOOT
  125. MOV DATE,#01H ; SET DATE TO 01 ON BOOT
  126. MOV HRS,#00H ; SET HOUR TO 00 ON BOOT
  127. MOV SECS,#00H ; SET SECOND TO 00 ON BOOT
  128. MOV MINS,#00H ; SET MINUTE TO 00 ON BOOT
  129. ACALL OFF ; ALARM OFF ON BOOT
  130. MOV SP,#2FH ; POSITION STACK ABOVE BUFFER
  131. MOV IE,#0 ; DISABLE INTERUPTS
  132.  
  133. SHOW_TIME:
  134. MOV A,#1
  135. MOV B,#7
  136. ACALL CUR_POS ; PLACE CURSOR FOR MONTH
  137. MOV A,MONTH ; LOAD MONTH DATA
  138. ACALL WRITE_BCD
  139. MOV A,#1
  140. MOV B,#10 ; PLACE CURSOR FOR DATE
  141. ACALL CUR_POS
  142. MOV A,DATE
  143. ACALL WRITE_BCD
  144. MOV A,#1
  145. MOV B,#13
  146. ACALL CUR_POS
  147. MOV A,YEAR
  148. ACALL WRITE_BCD
  149.  
  150. MOV A,#2
  151. MOV B,#4
  152. ACALL CUR_POS MOV A,HRS
  153. ACALL WRITE_BCD
  154. MOV A,#2
  155. MOV B,#7
  156. ACALL CUR_POS
  157. MOV A,MINS
  158. ACALL WRITE_BCD
  159. MOV A,#2
  160. MOV B,#10
  161. ACALL CUR_POS
  162. MOV A,SECS
  163. ACALL WRITE_BCD
  164. ACALL CHECK_ALARM_TIME
  165. ACALL delay1sec
  166. SJMP SHOW_TIME
  167.  
  168.  
  169. INCREMENT_TIME:
  170. ACALL MDELAY
  171. MOV R0,00000000b
  172. MOV IEN0,@R0
  173. JNB SET_HRS_BT , Y1
  174. JMP UP_HOUR ; GOTO SET TIME IF PUSHED
  175. Y1:
  176. JNB SET_MINS_BT,Y2 ; GOTO SET TIME IF PUSHED
  177. JMP UP_MIN
  178. Y2:
  179. JNB SET_SECS_BT, Y3 ; GOTO SET TIME IF PUSHED
  180. JMP UP_SEC
  181. Y3:
  182. JNB SET_DATES_BT, Y4
  183. JMP UP_DATE Y4:
  184. JNB SET_MONTHS_BT,Y5
  185. JMP UP_MONTH
  186. Y5:
  187. JNB SET_YEARS_BT,Y6
  188. JMP UP_YEAR
  189. Y6:
  190. JNB ALARM_SET_HOURS_BT,Y7 ; GOTO SET ALARMS ELSE SHOW TIME
  191. JMP ALARMS
  192. Y7:
  193. JB ALARM_SET_MINS_BT,Y8 ; GOTO SET ALARMS ELSE SHOW TIME
  194. JMP ALARMS
  195. Y8:
  196. ACALL SHOW_TIME
  197.  
  198. DECREMENT_TIME:
  199. ACALL MDELAY
  200. ACALL MDELAY
  201. MOV R0,00000000b
  202. MOV IEN0,@R0
  203. JNB SET_HRS_BT , W1
  204. JMP DOWN_HOUR ; GOTO SET TIME IF PUSHED
  205. W1:
  206. JNB SET_MINS_BT,W2 ; GOTO SET TIME IF PUSHED
  207. JMP DOWN_MIN
  208. W2:
  209. JNB SET_SECS_BT, W3 ; GOTO SET TIME IF PUSHED
  210. JMP DOWN_SEC
  211. W3:
  212. JNB SET_DATES_BT, W4
  213. JMP DOWN_DATE
  214. W4: JNB SET_MONTHS_BT,W5
  215. JMP DOWN_MONTH
  216. W5:
  217. JNB SET_YEARS_BT,W6
  218. JMP DOWN_YEAR
  219. W6:
  220. JNB ALARM_SET_HOURS_BT,W7 ; GOTO SET ALARMS ELSE SHOW TIME
  221. JMP ALARMS
  222. W7:
  223. JB ALARM_SET_MINS_BT,W8 ; GOTO SET ALARMS ELSE SHOW TIME
  224. JMP ALARMS
  225. W8:
  226. ACALL SHOW_TIME
  227.  
  228. OK_MONTH: ; PLACES NEW MONTH DATA INTO REGISTER
  229. MOV MONTH,A
  230. ACALL UPDATE
  231. AJMP SHOW_TIME
  232.  
  233. UP_MONTH: ; CHANGES MONTH DATA UP BY 1
  234. ACALL MDELAY
  235. MOV A,#1
  236. MOV B,#0
  237. ACALL CUR_POS
  238. ACALL PRINT_LCD
  239. DB ' ',0 ; PRINT '*' FOR MONTH
  240. MOV A,#1
  241. MOV B,#6
  242. ACALL CUR_POS
  243. ACALL PRINT_LCD
  244. DB '*',0
  245. MOV R1,#MONTH MOV A,@R1
  246. MOV R4,A
  247. ACALL CHECK_BCD
  248. CJNE A,#13H,OK_MONTH
  249. MOV A,#1
  250. MOV MONTH,A
  251. ACALL UPDATE
  252. AJMP SHOW_TIME
  253.  
  254. DOWN_MONTH: ; CHANGES MONTH DATA DOWN BY 1
  255. ACALL MDELAY
  256. MOV A,#1
  257. MOV B,#0
  258. ACALL CUR_POS
  259. ACALL PRINT_LCD
  260. DB ' ',0 ; PRINT '*' FOR MONTH
  261. MOV A,#1
  262. MOV B,#6
  263. ACALL CUR_POS
  264. ACALL PRINT_LCD
  265. DB '*',0
  266. MOV R1,#MONTH
  267. MOV A,@R1
  268. MOV R4,A
  269. ACALL CHECK_BCD_DOWN
  270. DEC A
  271. CJNE A,#0,OK_MONTH
  272. MOV A,#12H
  273. MOV MONTH,A
  274. ACALL UPDATE
  275. AJMP SHOW_TIME
  276.  
  277. OK_DATE: ; PLACES NEW DATE DATA INTO REGISTER
  278. MOV DATE,A
  279. ACALL UPDATE
  280. AJMP SHOW_TIME
  281.  
  282. UP_DATE: ; CHANGES DATE DATA UP BY 1
  283. ACALL MDELAY
  284. MOV A,#1
  285. MOV B,#6
  286. ACALL CUR_POS
  287. ACALL PRINT_LCD
  288. DB ' ',0 ; ERASE '*' BY MONTH
  289. MOV A,#1
  290. MOV B,#9
  291. ACALL CUR_POS
  292. ACALL PRINT_LCD
  293. DB '*',0 ; PRINT '*' BY DATE
  294. MOV R1,#DATE
  295. MOV A,@R1
  296. MOV R4,A
  297. ACALL CHECK_BCD
  298. CJNE A,#32H,OK_DATE
  299. MOV A,#1
  300. MOV DATE,A
  301. ACALL UPDATE
  302. AJMP SHOW_TIME
  303.  
  304. DOWN_DATE: ; CHANGES DATE DATA DOWN BY 1
  305. ACALL MDELAY
  306. MOV A,#1
  307. MOV B,#6 ACALL CUR_POS
  308. ACALL PRINT_LCD
  309. DB ' ',0 ; ERASE '*' BY MONTH
  310. MOV A,#1
  311. MOV B,#9
  312. ACALL CUR_POS
  313. ACALL PRINT_LCD
  314. DB '*',0 ; PRINT '*' BY DATE
  315. MOV R1,#DATE
  316. MOV A,@R1
  317. MOV R4,A
  318. ACALL CHECK_BCD_DOWN
  319. DEC A
  320. CJNE A,#0,OK_DATE
  321. MOV A,#31H
  322. MOV DATE,A
  323. ACALL UPDATE
  324. AJMP SHOW_TIME
  325.  
  326. OK_YEAR: ; PLACES NEW YEAR DATA INTO REGISTER
  327. MOV YEAR,A
  328. ACALL UPDATE
  329. AJMP SHOW_TIME
  330.  
  331. UP_YEAR: ; CHANGES YEAR DATA UP BY 1
  332. ACALL MDELAY
  333. MOV A,#1
  334. MOV B,#9
  335. ACALL CUR_POS
  336. ACALL PRINT_LCD
  337. DB '-',0 ; PRINT '-' BESIDE DATE
  338. MOV A,#1 MOV B,#12
  339. ACALL CUR_POS
  340. ACALL PRINT_LCD
  341. DB '*',0 ; PRINT '*' BESIDE YEAR
  342. MOV R1,#YEAR
  343. MOV A,@R1
  344. INC A
  345. CJNE A,#9AH,OK_YEAR
  346. MOV A,#97H
  347. MOV YEAR,A
  348. ACALL UPDATE
  349. AJMP SHOW_TIME
  350.  
  351.  
  352. DOWN_YEAR: ; CHANGES YEAR DATA DOWN BY 1
  353. ACALL MDELAY
  354. MOV A,#1
  355. MOV B,#9
  356. ACALL CUR_POS
  357. ACALL PRINT_LCD
  358. DB '-',0 ; PRINT '-' BESIDE DATE
  359. MOV A,#1
  360. MOV B,#12
  361. ACALL CUR_POS
  362. ACALL PRINT_LCD
  363. DB '*',0 ; PRINT '*' BESIDE YEAR
  364. MOV R1,#YEAR
  365. MOV A,@R1
  366. DEC A
  367. CJNE A,#96H,OK_YEAR
  368. MOV A,#99H
  369. MOV YEAR,A ACALL UPDATE
  370. AJMP SHOW_TIME
Advertisement
Add Comment
Please, Sign In to add comment