Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.72 KB | None | 0 0
  1. .nolist
  2. .include "m16def.inc"
  3. .list
  4. .listmac
  5. .device ATmega16
  6.  
  7.  
  8. .equ zero = ~0b11111100
  9. .equ jeden = ~0b01100000
  10. .equ dwa = ~0b11011010
  11. .equ trzy = ~0b11110010
  12. .equ cztery = ~0b01100110
  13. .equ piec = ~0b10110110
  14. .equ szesc = ~0b10111110
  15. .equ siedem = ~0b11100000
  16. .equ osiem = ~0b11111110
  17. .equ dziewiec = ~0b11110110
  18. .equ a = ~0b11101110
  19. .equ b = ~0b00111110
  20. .equ c = ~0b10011100
  21. .equ d = ~0b01111010
  22. .equ e = ~0b10011110
  23. .equ f = ~0b10001110
  24.  
  25. .cseg
  26. .org 0x0000
  27. jmp 0x0030
  28.  
  29. // obszar wektorów przerwań
  30.  
  31. .org 0x0030
  32.  
  33. /*
  34. // Ustawienie stosu
  35.  
  36. ldi r16, high(RAMEND)
  37. out SPH, r16 // starsza część
  38. ldi r16, low(RAMEND)
  39. out SPL, r16 // młodsza część
  40.  
  41.  
  42.  
  43. //Ustawienie portu A 7-4 wejscie, 3-0 wyjscie
  44. ldi r16, 0x0F
  45. out DDRA, r16
  46.  
  47. //Ustawienie portu B jako IO
  48. ldi r16, 0xFF
  49. out DDRB, r16
  50.  
  51. MAIN:
  52.  
  53. //kolumna 1
  54. ldi r16, 0b11110111
  55. out PORTA, r16
  56. nop
  57. nop
  58. in r17, PINA
  59.  
  60. cpi r17, 0b01110111
  61. breq KEY_0
  62.  
  63. cpi r17, 0b10110111
  64. breq KEY_1
  65.  
  66. cpi r17, 0b11010111
  67. breq KEY_2
  68.  
  69. cpi r17, 0b11100111
  70. breq KEY_3
  71.  
  72. //call P_DELAY
  73.  
  74. //kolumna 2
  75. MAIN_2:
  76. ldi r16, 0b11111011
  77. out PORTA, r16
  78. nop
  79. nop
  80. in r17, PINA
  81.  
  82. cpi r17, 0b01111011
  83. breq KEY_4
  84.  
  85. cpi r17, 0b10111011
  86. breq KEY_5
  87.  
  88. cpi r17, 0b11011011
  89. breq KEY_6
  90.  
  91. cpi r17, 0b11101011
  92. breq KEY_7
  93.  
  94.  
  95. //call P_DELAY
  96.  
  97.  
  98. //kolumna 3
  99. MAIN_3:
  100. ldi r16, 0b11111101
  101. out PORTA, r16
  102. nop
  103. nop
  104. in r17, PINA
  105.  
  106. cpi r17, 0b01111101
  107. breq KEY_8
  108.  
  109. cpi r17, 0b10111101
  110. breq KEY_9
  111.  
  112. cpi r17, 0b11011101
  113. breq KEY_A
  114.  
  115. cpi r17, 0b11101101
  116. breq KEY_B
  117.  
  118.  
  119. //call P_DELAY
  120.  
  121.  
  122. //kolumna 4
  123. MAIN_4:
  124. ldi r16, 0b11111110
  125. out PORTA, r16
  126. nop
  127. nop
  128. in r17, PINA
  129.  
  130. cpi r17, 0b01111110
  131. breq KEY_C
  132.  
  133. cpi r17, 0b10111110
  134. breq KEY_D
  135.  
  136. cpi r17, 0b11011110
  137. breq KEY_E
  138.  
  139. cpi r17, 0b11101110
  140. breq KEY_16
  141.  
  142.  
  143. //call P_DELAY
  144.  
  145. jmp MAIN
  146.  
  147. KEY_0:
  148. ldi r16, zero
  149. out PORTB, r16
  150. jmp MAIN
  151.  
  152. KEY_1:
  153. ldi r16, jeden
  154. out PORTB, r16
  155. jmp MAIN
  156.  
  157. KEY_2:
  158. ldi r16, dwa
  159. out PORTB, r16
  160. jmp MAIN
  161.  
  162. KEY_3:
  163. ldi r16, trzy
  164. out PORTB, r16
  165. jmp MAIN
  166.  
  167. KEY_4:
  168. ldi r16, cztery
  169. out PORTB, r16
  170. jmp MAIN_2
  171.  
  172. KEY_5:
  173. ldi r16, piec
  174. out PORTB, r16
  175. jmp MAIN_2
  176.  
  177. KEY_6:
  178. ldi r16, szesc
  179. out PORTB, r16
  180. jmp MAIN_2
  181.  
  182. KEY_7:
  183. ldi r16, siedem
  184. out PORTB, r16
  185. jmp MAIN_2
  186.  
  187.  
  188. KEY_8:
  189. ldi r16, osiem
  190. out PORTB, r16
  191. jmp MAIN_3
  192.  
  193. KEY_9:
  194. ldi r16, dziewiec
  195. out PORTB, r16
  196. jmp MAIN_3
  197.  
  198. KEY_A:
  199. ldi r16, a
  200. out PORTB, r16
  201. jmp MAIN_3
  202.  
  203. KEY_B:
  204. ldi r16, b
  205. out PORTB, r16
  206. jmp MAIN_3
  207.  
  208.  
  209. KEY_C:
  210. ldi r16, c
  211. out PORTB, r16
  212. jmp MAIN_4
  213.  
  214. KEY_D:
  215. ldi r16, d
  216. out PORTB, r16
  217. jmp MAIN_4
  218.  
  219. KEY_E:
  220. ldi r16, e
  221. out PORTB, r16
  222. jmp MAIN_4
  223.  
  224. KEY_16:
  225. ldi r16, f
  226. out PORTB, r16
  227. jmp MAIN_4
  228.  
  229. .org 0x0200
  230. P_DELAY:
  231. ldi r16, 255
  232. ldi r17, 255
  233. ldi r18, 20
  234.  
  235. DELAY:
  236. dec r16
  237. brne DELAY
  238. dec r17
  239. brne DELAY
  240. dec r18
  241. brne DELAY
  242.  
  243. ret
  244. */
  245.  
  246. ldi r16, zero
  247. sts 0x0060, r16
  248.  
  249. ldi r16, jeden
  250. sts 0x0061, r16
  251.  
  252. ldi r16, dwa
  253. sts 0x0062, r16
  254.  
  255. ldi r16, trzy
  256. sts 0x0063, r16
  257.  
  258. ldi r16, cztery
  259. sts 0x0064, r16
  260.  
  261. ldi r16, piec
  262. sts 0x0065, r16
  263.  
  264. ldi r16, szesc
  265. sts 0x0066, r16
  266.  
  267. ldi r16, siedem
  268. sts 0x0067, r16
  269.  
  270. ldi r16, osiem
  271. sts 0x0068, r16
  272.  
  273. ldi r16, dziewiec
  274. sts 0x0069, r16
  275.  
  276. ldi r16, a
  277. sts 0x0070, r16
  278.  
  279. ldi r16, b
  280. sts 0x0071, r16
  281.  
  282. ldi r16, c
  283. sts 0x0072, r16
  284.  
  285. ldi r16, d
  286. sts 0x0073, r16
  287.  
  288. ldi r16, e
  289. sts 0x0074, r16
  290.  
  291. ldi r16, f
  292. sts 0x0075, r16
  293.  
  294.  
  295. MAIN:
  296.  
  297. in r17, PINA
  298.  
  299. sbrs r17, 0x0060
  300. call KEY_0
  301.  
  302. sbrs r17, 0x0061
  303. call KEY_1
  304.  
  305. sbrs r17, 0x0062
  306. call KEY_2
  307.  
  308. sbrs r17, 0x0063
  309. call KEY_3
  310.  
  311. sbrs r17, 0x0064
  312. call KEY_4
  313.  
  314. sbrs r17, 0x0065
  315. call KEY_5
  316.  
  317. sbrs r17, 0x0066
  318. call KEY_6
  319.  
  320. sbrs r17, 0x0067
  321. call KEY_7
  322.  
  323. sbrs r17, 0x0068
  324. call KEY_8
  325.  
  326. sbrs r17, 0x0069
  327. call KEY_9
  328.  
  329. sbrs r17, 0x0070
  330. call KEY_A
  331.  
  332. sbrs r17, 0x0071
  333. call KEY_B
  334.  
  335.  
  336.  
  337.  
  338. jmp MAIN
  339.  
  340.  
  341. .org 0x0080
  342.  
  343. KEY_0:
  344. lds r16, 0x0060
  345. out PORTB, r16
  346. reti
  347.  
  348. .org 0x0090
  349.  
  350. KEY_1:
  351. lds r16, 0x0061
  352. out PORTB, r16
  353. reti
  354.  
  355. .org 0x0100
  356.  
  357. KEY_2:
  358. lds r16, 0x0062
  359. out PORTB, r16
  360. reti
  361.  
  362. .org 0x0110
  363.  
  364. KEY_3:
  365. lds r16, 0x0063
  366. out PORTB, r16
  367. reti
  368.  
  369. .org 0x0120
  370.  
  371. KEY_4:
  372. lds r16, 0x0064
  373. out PORTB, r16
  374. reti
  375.  
  376. .org 0x0130
  377.  
  378. KEY_5:
  379. lds r16, 0x0065
  380. out PORTB, r16
  381. reti
  382.  
  383. .org 0x0140
  384.  
  385. KEY_6:
  386. lds r16, 0x0066
  387. out PORTB, r16
  388. reti
  389.  
  390. .org 0x0150
  391.  
  392. KEY_7:
  393. lds r16, 0x0067
  394. out PORTB, r16
  395. reti
  396.  
  397. .org 0x0160
  398.  
  399. KEY_8:
  400. lds r16, 0x0068
  401. out PORTB, r16
  402. reti
  403.  
  404. .org 0x0170
  405.  
  406. KEY_9:
  407. lds r16, 0x0069
  408. out PORTB, r16
  409. reti
  410.  
  411. .org 0x0180
  412.  
  413. KEY_A:
  414. lds r16, 0x0070
  415. out PORTB, r16
  416. reti
  417.  
  418. .org 0x0190
  419.  
  420. KEY_B:
  421. lds r16, 0x0071
  422. out PORTB, r16
  423. reti
  424.  
  425. .org 0x0200
  426.  
  427. KEY_C:
  428. lds r16, 0x0072
  429. out PORTB, r16
  430. reti
  431.  
  432. .org 0x0210
  433.  
  434. KEY_D:
  435. lds r16, 0x0073
  436. out PORTB, r16
  437. reti
  438.  
  439. .org 0x0220
  440.  
  441. KEY_E:
  442. lds r16, 0x0074
  443. out PORTB, r16
  444. reti
  445.  
  446. .org 0x0230
  447.  
  448. KEY_16:
  449. lds r16, 0x0075
  450. out PORTB, r16
  451. reti
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement