Дипломдық жұмыстың мақсаты avr микроконтроллерін



жүктеу 5.01 Kb.
Pdf просмотр
бет6/7
Дата30.04.2017
өлшемі5.01 Kb.
түріДиплом
1   2   3   4   5   6   7

Қосымша А 
Жүгірме жарық бағдарламасы: 
.include "m128def.inc"     
 
.list   
 
 
 
 
.def  temp = r16   
          
.def   rab = r17 
 
 
.equ  kdel = 780 
.cseg   
 
 
 
 
.org   0 
 
 
 
 
ldi 
 
temp, 0x7F    
out 
 
SPL, temp      
 
out 
 
DDRD, temp 
  
ldi 
 
temp, 0xFF   
out 
 
DDRB, temp 
  
out 
 
PORTB, temp 
  
out 
 
PORTD, temp 
  
ldi 
 
temp, 0x05 
out 
 
TCCR1B, temp 
 
ldi  
          temp, 0x80   
          
out 
 
ACSR, temp 
main: in 
temp, PIND              
sbrs            temp, 0 
          
rjmp                m3  
 
 
m1:  ldi 
rab, 0b10000000             
m2:  out 
PORTB, rab  
 
 
rcall  wait1  
 
 
lsr 
rab 
 
 
 
    
brcc   m2 
 
 
 
  
rjmp  main   
 
               
m3:  ldi 
rab, 0b00000001 
m4:  out 
PORTB, rab  
 
 
rcall  wait1              
 
lsl 
rab 
     
 
brcc  m4 
 
     
          rjmp  main   
 
 
wait1:          push  temp   
 
                    ldi 
temp, 0 
 
          out 
TCNT1H, temp 
 
          out    TCNT1L, temp 
  
wt1:  in temp, TCNT1L             
 
cpi 
temp, low(kdel) 
  

96 
 
 
 
brlo  wt1   
 
wt2:  in temp, TCNT1H  
  
          cpi temp, high(kdel)       
 
brlo  wt1   
         
                    pop  temp   
 
 
 
ret 
 
Қосымша Б 
.include "m128def.inc"   
.list   
 
 
 
.def  temp = R16  
 
.def  temp1 = R17 
 
.def  count = R18  
 
.def  fnota = R19  
 
.def  dnota = R20  
 
.def  loop = R21   
 
 
.cseg   
 
 
 
.org  0 
 
 
start:  rjmp  init 
           
reti 
 
 
 
 
reti 
 
 
 
 init: 
ldi 
temp, Low(RAMEND)    
out 
SPL, temp   
 
ldi  
temp, 0x20   
out 
PORTB, temp 
 
out 
DDRB, temp 
 
ldi  
temp, 0x7F   
 
 
out 
PORTD, temp 
 
ldi 
temp, 0x00 
 
out 
DDRD, temp 
 
ldi  
temp, 0x80 
 
out 
 
ACSR, temp 
         ldi     temp, 0x09   
 
 
 
out 
TCCR1B, temp 
m1:   
ldi      temp, 0x00   
 
 
out 
TCCR1A, temp 
 main: 
 
clr  
count  
         
 
in 
temp, PIND           
m2:   
lsr  
temp   
         
 
brcc   m3 
 
 

97 
 
 
inc 
count  
         
 
cpi 
count, 7 
        
 
brne  m2 
 
 
 
 
rjmp  m1 
 
 
 
m3:            mov 
YL, count   
 
 
ldi 
ZL, low(tabm*2)   
 
ldi 
ZH, high(tabm*2) 
 
rcall  addw   
 
  
 
lpm  XL, Z+ 
 
 
  
 
lpm  XH, Z 
 
 
 
m4:             mov  ZH, XH 
 
 
 
 
mov  ZL, XL 
m5:            in 
temp, PIND  
 
 
 
cpi 
temp, 0x7F   
 
 
breq  m1 
 
 
 
 
lpm  temp, Z 
 
 
 
cpi 
temp, 0xFF   
 
 
breq  m4 
 
 
 
                   andi  temp, 0x1F   
 
 
mov  fnota, temp   
 
 
lpm  temp, Z+ 
 
 
 
rol 
temp   
 
 
 
rol 
temp   
 
 
rol 
temp 
 
rol 
temp 
 
andi  temp, 0x07   
 
 
mov  dnota, temp   
 
 
rcall  nota   
 
 
 
rjmp  m5 
 
       
addw:          push  YH   
         lsl  YL  
 
 
 
         ldi  YH, 0 
 
 
 
         add  ZL, YL   
 
         adc ZH, YH 
         pop 
YH 
         ret 
nota:            push  ZH 
 
push  ZL 
 
push  YL 
 
push  temp 
 
cpi 
fnota, 0x00   
 
 
breq  nt1 
 
 
 
  
 
mov  YL, fnota 
 
 

98 
 
 
ldi 
ZL, low(tabkd*2)    
 
ldi 
ZH, high(tabkd*2) 
 
rcall  addw   
 
  
 
lpm  temp, Z+ 
 
  
 
lpm  temp1, Z 
 
 
 
out 
OCR1AH, temp1    
 
out 
OCR1AL, temp 
  
 
ldi 
temp, 0x40   
 
 
out 
TCCR1A, temp 
   nt1:  
rcall  wait   
 
 
 
ldi 
temp, 0x00   
 
 
out 
TCCR1A, temp 
 
ldi 
dnota,0 
 
 
  
 
rcall  wait   
 
 
 
pop  temp 
 
pop  YL 
 
pop  ZL 
 
pop   ZH 
 
ret 
  wait:  
push  ZH 
 
push  ZL 
 
push  YH 
 
push  YL 
 
mov  YL, dnota   
  
 
ldi 
ZL, low(tabz*2)   
 
ldi 
ZH, high(tabz*2) 
 
rcall  addw   
 
  
 
lpm  YL, Z+ 
 
 
  
 
lpm  YH, Z 
 
 
  
 
clr 
ZL 
 
 
 
  
 
clr 
ZH 
w1:   
ldi 
loop,255 
 
 
w2:   
dec  loop 
 
brne   w2 
 
adiw  R30, 1 
 
 
  
 
cp 
YL, ZL 
 
 
  
 
brne  w1 
 
cp 
YH, ZH 
 
 
 
brne  w1 
 
pop  YL 
 
 
 
 
 
pop  YH 
 
pop  ZL 
 
pop   ZH 

99 
 
 
 
ret 
tabz:          .dw      128,256,512,1024,2048,4096,8192                                                   
tabkd:        .dw  0 
       .dw 
 
4748,4480,4228,3992,3768,3556,3356,3168,2990,2822,2664,2514 
        .dw 
 
2374,2240,2114,1996,1884,1778,1678,1584,1495,1411,1332,1257 
         .dw 
 
1187,1120,1057, 998, 942, 889, 839, 792 
tabm:          .dw 
 
mel1*2,mel2*2,mel3*2,mel4*2 
          .dw   
mel5*2,mel6*2,mel7*2                                                
;   В траве сидел кузнечик 
mel1:         .db 
 
 109,104,109,104,109,108,108, 96,108,104  
 
.db 
 
108,104,108,109,109, 96,109,104,109,104  
 
.db 
 
109,108,108, 96,108,104,108,104,108,141  
 
.db 
 
 96,109,111, 79, 79,111,111,112, 80, 80  
 
.db 
 
112,112,112,111,109,108,109,109, 96,109  
 
.db 
 
111, 79, 79,111,111,112, 80, 80,112,112  
 
.db 
 
112,111,109,108,141,128, 96,255  
 
; Песенка крокодила Гены 
mel2: .db 
 
          109,110,141,102,104,105,102,109,110,141  
 
.db 
 
104,105,107,104,109,110,141,104,105,139  
 
.db 
 
109,110,173, 96,114,115,146,109,110,112  
 
.db 
 
109,114,115,146,107,109,110,114,112,110  
 
.db 
 
146,109,105,136,107,105,134,128,128,102  
 
.db 
 
105,137,136,128,104,107,139,137,128,105  
 
.db 
 
109,141,139,128,110,109,176,128,128,109  
 
.db 
 
112,144,142,128,107,110,142,141,128,105  
 
.db 
 
109,139,128,173,134,128,128,109,112,144  
 
.db 
 
142,128,107,110,142,141,128,105,109,139  
 
.db 
 
128,173,146,128, 96,255 
 
;  В лесу родилась елочка 
mel3:         .db 
 
132,141,141,139,141,137,132,132,132,141  
        .db 
 
141,142,139,176,128,144,134,134,142,142  
        .db 
 
141,139,137,132,141,141,139,141,169,128  
        .db 
 
 96,255 
 
;  Менің Қазақстаным 
mel4:          .db 
 
140,108,177,140,106,168,106,104,106,172 
         .db 
 
136,103,165,136,104,168,135,104,170,140 
 
.db 
 
111,173,108,106,109,204, 96,172,140,177 
 
.db 
 
113,111,113,179,145,111,177,141,108,170 

100 
 
 
.db 
 
136,106,172,108,106,108,111,109,108,106 
 
.db 
 
168,103,104,103,165, 96,128,168,135,104 
 
.db 
 
202,136,103,136,106,204,173,141,108,205 
 
.db 
 
140,106,140,109,207,177,145,111,209,148 
 
.db 
 
116,148,147,177,172,143,111,143,141,172 
 
.db 
 
168,135,101,131,135,165,128,255 
 
; The Godfather Theme 
mel5:           .db 
 
136,141,144,143,141,144,141,143,141,137  
 
.db 
 
139,200,136,141,144,143,141,144,141,143 
 
.db 
 
141,136,135,198,134,137,140,207,134,137  
 
.db 
 
140,205,129,132,139,137,136,139,137,137  
 
.db 
 
136,136,129,193,141,141,140,203,175,141  
 
.db 
 
137,200,136,139,136,198,134,137,135,200  
 
.db 
 
136,141,144,143,141,144,141,143,141,137  
 
.db 
 
139,200,136,141,144,143,141,144,141,143 
 
.db 
 
141,136,135,198,134,137,140,207,134,137 
 
.db 
 
140,205,129,132,139,137,136,139,137,137  
 
.db 
 
136,136,129,193, 96,255 
 
; Сагындым Алматымды 
mel6:            .db 
 
133,133,133,138,138,140,205,133,133,133  
 
.db 
 
143,143,141,204,133,133,133,137,137,138  
 
.db 
 
204,133,133,133,141,141,140,202,138,138  
 
.db 
 
138,142,142,143,209,138,138,138,146,146  
 
.db 
 
145,207,146,146,145,143,141,143,204,133  
 
.db 
 
133,133,141,141,140,202,145,111,113,111 
 
.db 
 
141,143,141,204,133,133,133,141,141,140   
 
.db 
 
202,145,111,113,111,141,143,141,204,133 
 
.db 
 
133,133,141,141,140,202, 96,255 
 
; День Победы 
mel7:           .db 
 
133,101,133,133,128,133,133,138,101,138 
 
.db 
 
101,170,133,131,129,129,129,133,138,141  
 
.db 
 
140,138,204,160,133,101,133,133,128,133  
 
.db 
 
133,140,101,140,101,172,133,134,133,101  
 
.db 
 
133,137,140,143,141,140,205,140,109,140 
 
.db 
 
108,172,202,140,106,137,138,204,172,170 
 
.db 
 
170,201,137,138,140,143,141,140,202,170  
 
.db 
 
168,200,198,134,136,138,106,136,134,170  
 
.db 
 
165,135,103,135,167,128,137,105,137,169 
 
.db 
 
128,138,106,204,202,255 
 

101 
 
 
 
Қосымша В 
.include "tn2313def.inc" 
.list   
 
 
   
.def  drebL = R1   
 
.def  drebH = R2  
 
.def  temp1 = R3 
.def  temp = R16  
 
.def  data = R17   
 
.def  flz = R18 
 
 
.def  count = R19  
 
.def  addre = R20  
 
.def  codL = R21  
 
.def  codH = R22  
 
.def  loop = R23   
 
.def  fnota = R24  
 
.def  dnota = R25  
 
; Тұрақтыларды анықтау 
.equ  bsize = 60   
 
.equ  zad  = 100  
 
.equ  kandr = 20   
 
 
; SRAM жадысында ұяшықтарды резервтеу 
 
.dseg   
 
 
.org  0x60   
bufr:  .byte  bsize           
melod: .byte 1 
 
 
; EEPROM жадысында ұяшықтарды резервтеу 
 
.eseg   
 
 
 
.org  0x08   
 
 klen:    .byte 

 
 
bufe:     .byte 
bsize    
 
 
; Бағдарламаның бастапқы коды 
            .cseg  
 
 
 
  .org  0 
 
 
 

102 
 
start:   rjmp  init 
 
 
reti 
 
 
 
 
reti 
 
 
 
 
reti 
 
 
       
 
rjmp  propr                   
 
rjmp  propr                 
 
reti 
 
 
        
 
reti 
 
 
 
 
reti 
 
 
       
 
reti 
 
 
 
 
reti 
 
 
        
 
reti 
 
 
  
 
reti 
 
 
 
 
reti 
 
 
 
 
reti 
 
 
 
 
reti 
 
 
 
 
reti 
 
 
 
reti 
 
 
 
                                              
;    Инициализация модулі                
init: 
; Стека инициализациясы 
 
ldi 
temp, RAMEND          
 
out 
SPL, temp   
 
 
; В/В портын инициализациясы 
 
ldi 
 
temp,0x18        
 
out 
 
DDRB,temp 
 
ldi 
 
temp,0xE7 
 
out 
 
PORTB,temp 
 
 
ldi 
 
temp, 0x7F   
 
 
out 
 
PORTD, temp 
 
ldi 
 
temp, 0 
 
out 
 
DDRD, temp 
 
; Компаратора қосу инициализациясы 
 
ldi  
temp, 0x80 
 
out 
ACSR, temp 
; Әуен саны 
 
ldi 
temp,0 
 
sts 
melod,temp                                                  
main: 

103 
 
; Таймера инициализациясы 
 
 
ldi 
temp,high(zad) 
 
 
out 
OCR1AH,temp 
 
ldi 
temp,low(zad) 
 
out 
OCR1AL,temp 
 
ldi 
temp,0x03   
 
 
out 
TCCR1B,temp 
 
 
ldi 
codL,0x7F 
 
ldi 
codH,0x07 
 
m0:  rcall  incod  
 
 
 
brne  m0 
 
 
 
 
m1:  in 
temp,PINB   
 
 
sbrs  temp,6 
 
rjmp  kk1              
 
 
rcall  incod  
           
breq  m1 
 
 
 
  
m2:  ldi 
ZH,high(bufr) 
 
 
ldi 
ZL,low(bufr) 
 
 
clr 
count  
 
 
 
; Код енгізі циклі 
m3:  cli 
 
 
           
 
ldi 
data,1  
 
 
rcall  wait   
 
 
m5:  rcall  incod  
 
 
st 
Z+,XL                      
 
st 
Z+,XH 
 
inc 
count  
             
 
inc 
count 
 
cpi 
count,bsize               
 
brsh  m7 
 
 
 
mov  codL,XL 
 
 
mov  codH,XH 
 
ldi 
data,2  
 
 
rcall  wait 
 
m6:  rcall  incod  
 
 
brne  m3 
 
               

104 
 
 
cpi 
flz,1   
 
 
brne   m6 
 
m7:  sbic  PINB,7 
 
       
 
rjmp  m9 
 
 
 
; Код жазу редимі 
 
mov   data,count   
       
 
ldiaddre,klen 
 
 
 
rcall  eewr   
 
 
 
ldi 
addre,bufe   
 
 
ldi 
ZH,high(bufr) 
 
 
ldi 
ZL,low(bufr) 
 
 
m8:  ld 
data, Z+ 
                
 
rcall  eewr   
                
 
dec  count  
  
 
brne  m8 
 
rjmp  m11 
 
 
; Код тексеру процедурасы  
m9: 
 
ldi 
addre,klen   
 
rcall  eerd   
 
 
cp 
count,data   
 
brne  m13   
          
 
ldi 
addre,bufe            
 
ldi 
ZH,high(bufr) 
 
ldi 
ZL,low(bufr) 
 
 
m10:           rcall  eerd   
           
 
 
ld 
temp,Z+ 
 
 
 
cp 
data,temp   
 
 
brne   m13   
 
 
 
dec  count  
 
 
 
brne  m10 
 
; Құлыпты ашу 
m11:   
 
 
sbi 
PORTB,4   
 
 
ldi 
data,3  
 
 
rcall  wait 
 
cbi 
PORTB,4   
 

105 
 
m13:  rjmp  main 
Қосымша процедуралар: 
; Клавиатурадан 2 байтты тексеру 
incod:   push count 
ic1:  ldi 
count,kandr              
 
ic2:  in 
XL,PIND   
 
 
andi  XL,0x7F 
 
 
 
in 
XH,PINB   
 
 
andi  XH,0x07 
 
 
 
cpi 
count,kandr 
 
brne  ic3 
 
 
 
 
mov  drebL,XL   
 
mov  drebH,XH 
 
 
rjmp  ic4 
 
 
 
ic3:  cp 
XL,drebL   
 
 
brne  ic1 
 
 
 
 
 
cp 
XH,drebH   
 
 
brne  ic1 
 
 
 
ic4:  dec  count  
 
 
 
brne  ic2 
 
 
 
 
 
cp 
XL,codL 
 
 
 
 
brne  ic5 
 
 
cp 
XH,codH 
ic5:  pop  count 
 
 
ret 
; Кідіру бағдарламасы 
wait: 
 
cpi 
data,1  
 
 
 
brne  w1 
 
ldi 
temp,0x40    
  
 
rjmp  w2 
w1:  ldi 
temp,0x80    
 
w2:  out 
TIMSK,temp 
 
 
 
clr  
temp   
 
 
 
 
out 
 
 
 
 
out 
 
 
 
 
ldi 
flz,0   
 
 
 
sei 
 
 
 
 
 
 
 
cpi 
data,2  
 
 
 
breq  w4 
 
 
 
w3:   
cpi 
flz,1   
 
 
 
brne   w3 
w4:   
ret 

106 
 
 
; EEPROM-ға байт жазу 
eewr: 
 
sbic   EECR,EEWE 
 
 
 
 
rjmp  eewr   
 
 
 
 
out 
EEAR,addre 
 
 
 
 
out 
EEDR,data   
 
 
 
sbi 
EECR,EEMWE   
 
 
 
sbi 
EECR,EEWE 
 
 
 
 
inc 
addre  
 
 
 
 
ret 
; EEPROM-ға байт оқу 
eerd:   
 
sbic  EECR,EEWE 
 
 
 
 
rjmp  eerd   
 
 
 
 
out 
EEAR,addre 
 
 
 
 
sbi 
EECR,EERE 
 
 
          in 
data, EEDR  
 
 
 
inc 
addre  
 
 
 
 
ret 
propr: ldi 
 
flz,1   
 
 
 
reti 
 
 
 
 
kk1: 
 
 
ldi  
temp, 0x09   
  
 
 
out 
TCCR1B, temp 
km1:  ldi  
temp, 0x00   
 
 
 
out 
TCCR1A, temp 
 
 
lds 
count,melod  
 
 
inc 
count  
 
 
 
cpi 
count,8 
 
 
 
 
brne  km2   
 
 
 
 
clr 
count  
 
km2:  sts 
melod,count  
 
; Әуен таңдау 
km3: 
 
 
mov  YL, count   
 
 
 
ldi 
ZL, low(tabm*2)   
 
 
ldi 
ZH, high(tabm*2) 
 
 
rcall  addw   
 
 
 
 
lpm   
XL, Z+ 
 
 
 
 
 
lpm   
XH, Z 
 
 
  
 

107 
 
; Музыка орындалу 
 
km4:  mov  ZH, XH 
 
 
 
 
 
mov  ZL, XL 
 
km5:  in 
temp, PINB  
 
 
 
 
sbrc  temp, 6 
 
 
 
 
 
rjmp  km6   
 
 
 
 
lpm  temp, Z 
 
 
 
 
 
cpi 
temp, 0xFF   
 
 
 
breq  km4   
 
 
 
 
 
andi  temp, 0x1F   
 
 
 
mov  fnota, temp   
 
 
 
lpm  temp, Z+ 
 
 
 
 
rol 
temp   
 
 
 
 
rol 
temp   
 
 
 
 
rol 
temp 
 
 
rol 
temp 
 
andi  temp, 0x07   
 
 
 
mov  dnota, temp  
 
 
 
rcall  nota   
 
 
 
 
rjmp  km5   
 
 
km6:  ldi  
temp, 0x00   
 
 
 
out 
TCCR1A, temp 
 
 
rjmp  main 
                                                    
;         Көмекші бағдарламалар               
addw: push  YH 
 
 
lsl 
YL 
 
 
 
 
 
 
ldi 
YH, 0  
 
 
 
 
add  ZL, YL 
 
 
 
 
 
adc  ZH, YH 
 
 
 
pop  YH 
 
 


жүктеу 5.01 Kb.

Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7




©emirb.org 2020
әкімшілігінің қараңыз

    Басты бет