⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 klawiatura+7led- lista3.txt

📁 又一个国外的一个关于msp430f449开源项目资料---源码之五
💻 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 + -