📄 klawiatura+7led- lista3.txt
字号:
;POLITECHNIKA OPOLSKA
;PROGRAM DO KLAWIATURY I 7LED
;PRACA DYPLOMOWA
;MARCIN BAROWSKI
;JANUSZ SZYMANSKI
; 2006/2007
#include <msp430x44x.h>
;-----------------------------------------------------------------------------
ORG 01100h ; Program Start
;----------------------------------------------------------------------------
RESET mov.b #0FFh,R15
poczatek: mov.w #0A00h,SP ; inicjalizacja wskaznika stosu
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL
;---------------------Wyswietlanie wartosci na LED7-------------------------------------------------;
mov.b #100,R10 ;wartosc odswiezania 7LED
mov.b #0FFh,&P2DIR ;ustaw jako wyjscie P2
mov.b #0FFh,&P2OUT ;ustaw stan H na P2
mov.b #100,R12 ;wartosc opoznienia pomiedzy kolejnym czytaniem
mov.b #0FFh,&P1DIR ;ustaw port P1 jako wyjscie
qwe: mov.b R15,&P1OUT ; wystaw wartosc z R15 na P1
mov.b #11111110b,&P2OUT ;zalacz pozycje 1 z LED7
mov.b #0FFh,&P2OUT ;wylacz 1 pozycje LED7
mov.b R14,&P1OUT ;wypisz na port P1 wartosc z R14
mov.b #11111101b,&P2OUT ;zalacz pozycje 2 z LED7
mov.b #0FFh,&P2OUT ; wylacz pozycje 2
dec R10 ;dekrementuj R10 (odswiezanie)
jnz qwe ;skacz jesli nie zero do qwe
;-------------------Ustawianie i Sprawdzanie pierwszego wiersza-----------------------------------;
mov.b #01111110b,R4 ; wartosc dla przelacznika nr 1
mov.b #01111101b,R5 ; wartosc dla przelacznika nr 2
mov.b #01111011b,R6 ; wartosc dla przelacznika nr 3
mov.b #01110111b,R7 ; wartosc dla przelacznika nr 4
mov.b #01101111b,R8 ; wartosc dla przelacznika nr 5
bis.b #96,&P1DIR ;ustaw dwa najstarsze bity bajtu jako wyjscie
mov.b #96,&P1OUT ;ustaw jeden na tych bitach SPRAWDZAJ PIERWSZY WIERSZ
mov.b #000,&P1DIR ;ustaw port 1 jako wejscie
mov.b &P1IN,R9 ;zczytaj wartosc z portu i umiesc ja w R9
jeszcze: dec R12 ;petla opzniajaca pomiedzy kolejnym zczytaniem
JNZ jeszcze ;skocz jesli nie zero do etykiety jeszcze
mov.b #96,&P1DIR ;ustaw dwa najstarsze bity bajtu jako wyjscie
mov.b #96,&P1OUT ;ustaw jeden na tych bitach SPRAWDZAJ PIERWSZY WIERSZ
mov.b #000,&P1DIR ;ustaw port 1 jako wejscie
mov.b &P1IN,R9 ;zczytaj wartosc z portu i umiesc ja w R9
mov.b #100,R10 ;wartosc odswiezania wyswietlaczy LED7
mov.b #0FFh,&P2DIR ;ustaw P2 jako wyjscie
mov.b #0FFh,&P2OUT ;ustaw P2 w stan H
mov.b #0FFh,&P1DIR ;ustaw P1 jako wyjscie
qwe2: mov.b R15,&P1OUT ;wypisz wartosc z R15 na P1
mov.b #11111110b,&P2OUT ; zalacz pierwsza pozycje LED7
mov.b #0FFh,&P2OUT ;wylacz 1 pozycje LED7
mov.b R14,&P1OUT ;wypisz na port P1 wartosc z R14
mov.b #11111101b,&P2OUT ;zalacz pozycje nr2 LED7
mov.b #0FFh,&P2OUT ; wylacz 2 pozycje LEd7
dec R10 ;dekrementuj R10 (odswiezanie)
jnz qwe2 ; jesli nie zero to skocz do qwe2
CMP R4,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 1
JEQ a ; jesli sa sobie rowne skocz do a
CMP R5,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 2
JEQ b ; jesli sa sobie rowne skocz do b
CMP R6,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 3
JEQ c ;jesli sa sobie rowne skocz do c
CMP R7,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 4
JEQ d ;jesli sa sobie rowne skocz od d
CMP R8,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 5
JEQ e ;jesli sa sobie rowne skocz do e
;-------------------------Ustawienia i Sprawdzanie drugiego wiersza---------------------------------------;
mov.b #100,R12 ; wartosc opoznienia pomiedzy kolejnym zczytaniem
mov.b #0FFh,&P2OUT ; ustaw P2 jako wyjscie
mov.b #10111110b,R4 ;wartosc dla przelacznika nr 6
mov.b #10111101b,R5 ;wartosc dla przelacznika nr 7
mov.b #10111011b,R6 ;wartosc dla przelacznika nr 8
mov.b #10110111b,R7 ;wartosc dla przelacznika nr 9
mov.b #10101111b,R8 ;wartosc dla przelacznika nr 10
bis.b #160,&P1DIR ;ustaw jako wyjscie port P1.7 i P1.5
mov.b #160,&P1OUT ;ustaw H na tych wyjsciach SPRAWDZANIE 2 WIERSZA
mov.b #100,R10 ;wartosc odswiezania LED7
mov.b #000,&P1DIR ;ustaw port P1 jako
mov.b &P1IN,R9 ;czytaj wartosc z Portu P1 i umiesc w R9
jeszcze1: dec R12 ;petla opozniajaca przed 2 zczytaniem
JNZ jeszcze1 ;jesli nie zero skocz do jeszcze1
bis.b #160,&P1DIR ;ustaw jako wyjscie port P1.7 i P1.5
mov.b #160,&P1OUT ;ustaw H na tych wyjsciach SPRAWDZANIE 2 WIERSZA
mov.b #000,&P1DIR ;ustaw port P1 jako
mov.b &P1IN,R9 ;czytaj wartosc z Portu P1 i umiesc w R9
mov.b #100,R10 ;wartosc odswiezania
mov.b #0FFh,&P2DIR ; ustaw P2 jako wyjscie
mov.b #0FFh,&P2OUT ; ustaw P2 w stanie H
mov.b #0FFh,&P1DIR ;ustaw P1 jako wyjscie
qwe3: mov.b R15,&P1OUT ;wypisz wartosc z R15 na P1
mov.b #11111110b,&P2OUT ;zalacz pierwsza pozycje LED7
mov.b #0FFh,&P2OUT ;wylacz pierwsza pozycje LED7
mov.b R14,&P1OUT ;wystaw wartosc z R14 na P1
mov.b #11111101b,&P2OUT ;zalacz druga pozycje LED7
mov.b #0FFh,&P2OUT ;wylacz LEd7
dec R10 ;dekrementuj R10 (odswiezanie)
jnz qwe3 ;skacz jesli nie zero do qwe3
CMP R4,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 6
JEQ f ; jesli sa sobie rowne skocz do f
CMP R5,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 7
JEQ g ; jesli sa sobie rowne skocz do g
CMP R6,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 8
JEQ h ; jesli sa sobie rowne skocz do h
CMP R7,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 9
JEQ i ; jesli sa sobie rowne skocz do i
CMP R8,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 10
JEQ j ; jesli sa sobie rowne skocz do j
;-----------------------Ustawienia i sprawdzanie trzeciego wiersza-------------------------------------;
mov.b #11011110b,R4 ;wartosc dla przelacznika nr 11
mov.b #11011101b,R5 ;wartosc dla przelacznika nr 12
mov.b #11011011b,R6 ;wartosc dla przelacznika nr 13
mov.b #11010111b,R7 ;wartosc dla przelacznika nr 14
mov.b #11001111b,R8 ;wartosc dla przelacznika nr 15
bis.b #192,&P1DIR ;ustaw bity P1.5 i P1.6 jako wyjscie
mov.b #192,&P1OUT ;wystaw H na tych bitach
mov.b #100,R12 ;wartosc opoznienia pomiedzy kolejnym zczytaniem
mov.b #000,&P1DIR ;ustaw port P1 jako wyjscie
mov.b &P1IN,R9 ;zczytaj wartosc z portu i umiesc w R9
jeszcze2: dec R12 ;opoznienie przed nastepnym zczytaniem
JNZ jeszcze2 ; jesli nie zero skacz do jeszcze2
bis.b #192,&P1DIR ;ustaw bity P1.5 i P1.6 jako wyjscie
mov.b #192,&P1OUT ;wystaw H na tych bitach
mov.b #000,&P1DIR ;ustaw port P1 jako wyjscie
mov.b &P1IN,R9 ;zczytaj wartosc z portu i umiesc w R9
mov.b #100,R10 ;wartosc odswiezania LED7
mov.b #0FFh,&P2DIR ;ustaw P2 jako wyjscie
mov.b #0FFh,&P2OUT ;ustaw P2 w stanie H
mov.b #0FFh,&P1DIR ;ustaw P1 jako wyjscie
qwe4: mov.b R15,&P1OUT ;wypisz wartosc z R15 na P1
mov.b #11111110b,&P2OUT ;zalacz pierwsza pozycje LED7
mov.b #0FFh,&P2OUT ;wylacz LED7
mov.b R14,&P1OUT ;wypisz wartosc z R14 na P1
mov.b #11111101b,&P2OUT ;zalacz druga pozycje LED7
mov.b #0FFh,&P2OUT ;wylacz LED7
dec R10 ;dekrementuj R10
jnz qwe4 ;jesli nie zero skacz do R10
CMP R4,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 11
JEQ k ; jesli sa sobie rowne skocz do k
CMP R5,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 12
JEQ l ; jesli sa sobie rowne skocz do l
CMP R6,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 13
JEQ m ; jesli sa sobie rowne skocz do m
CMP R7,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 14
JEQ n ; jesli sa sobie rowne skocz do n
CMP R8,R9 ; porownaj wartosc z R9 z wartoscia dla przelacznika nr 15
JEQ o ; jesli sa sobie rowne skocz do o
jmp poczatek
;---------------------------Tablice wartosci na LED7--------------------------------------------------------;
a: ;01
mov.b #11111001b,R15
mov.b #11111111b,R14
jmp poczatek
b: ;02
mov.b #10100100b,R15
mov.b #11111111b,R14
jmp poczatek
c: ;03
mov.b #10110000b,R15
mov.b #11111111b,R14
jmp poczatek
d: ;04
mov.b #10011001b,R15
mov.b #11111111b,R14
jmp poczatek
e: ;05
mov.b #10010010b,R15
mov.b #11111111b,R14
jmp poczatek
f: ;06
mov.b #10000010b,R15
mov.b #11111111b,R14
jmp poczatek
g: ;07
mov.b #11111000b,R15
mov.b #11111111b,R14
jmp poczatek
h: ;08
mov.b #10000000b,R15
mov.b #11111111b,R14
jmp poczatek
i: ;09
mov.b #10010000b,R15
mov.b #11111111b,R14
jmp poczatek
j: ;10
mov.b #11111001b,R15
mov.b #11000000b,R14
jmp poczatek
k: ;11
mov.b #11111001b,R15
mov.b #11111001b,R14
jmp poczatek
l: ;12
mov.b #11111001b,R15
mov.b #10100100b,R14
jmp poczatek
m: ;13
mov.b #11111001b,R15
mov.b #10110000b,R14
jmp poczatek
n: ;14
mov.b #11111001b,R15
mov.b #10011001b,R14
jmp poczatek
o: ;15
mov.b #11111001b,R15
mov.b #10010010b,R14
jmp poczatek
;-----------------------------------------------------------------------------
; Interrupt Vectors
;------------------------------------------------------------------------------
ORG 0FFFEh ; RESET Vector
DW RESET ;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -