movlw 0x06 ;tööregistrisse antakse nr 6 movwf ADCON1 ;PORTA seadistatakse digitaalsisendiks ;(00000110) movlw b'11111111' ;tööregistrile omistatakse binaararv ;11111111 movwf TRISA ;pordis A määratakse kõik viigud ;sisenditeks bcf STATUS,RP0 ;Valime mälupanga 0 bcf STATUS,RP1 ;PORTD asub pangas 0! movlw .0 ;tööregistrisse omistatakse 10nd nr 0 movwf PORTD ;PORTD väärtused sätitakse nulliks mainloop btfss PORTA,2 ;Kontrollime PORTA2 väärtust, kui väärtus ;võrdub 1, siis minnakse PORTA,3 ;kontrollima vastasel juhul liigutakse ;programmi in goto in
Ülesanne: Koosta või katseta olemasolevat programmi, millega lülitatakse kõik digitaalväljundid sisse Käik: Kasutasime registreid PORTC, PORTD, TRISC, TRISD. Need aga paiknevad erinevates mäluakendes, seega lülitasime ümber mäluaknad registri signaalidega 5 ja 6 (RP0 EQU 5 ja RP1 EQU 6). Siis lülitatasime sisse mäluakna 1. Järgnevalt kustutasime registrid TRISC ja TRISD nulliks ja mõlemas määrasime RD0, RD1, RD2, RD, RD4, RD5, RD6 ja RD7 väljunditeks. Lõpetuseks laadisime registrisse W 8-bitilise arvu, milles kõik signaalid on ühed ninglülitasime
Juhendaja: Madis
Lehtla
Tallinn
2017
7-Segmendilise valgusdioodi juhtimine
8 #include
Kas nupp on all? Kustutada kõik valgusdioodid JAH Lülitada kõik valgusdioodid sisse Käesolevale aruandele on lisatud tööfailid. Antud ülesande juurde käib tööfail switch_all_on.asm, mis on etteantud näidisprogrammi2 täiendatud versioon. Ülesande lahendamisel on registri PORTA bitid seatud sisenditeks ja PORTD bitid, mis on ühendatud valgusdioodidega, väljunditeks. See tähendab, et ühe valgusdioodi sisselülitamiseks tuleb vastav bitt registris PORTD sisse lülitada. Kõigi valgusdioodide sisselülitamiseks tuleb kõik bitid registris PORTD sisse lülitada. Programm kontrollib esialgu, kas nupp on alla vajutatud. Kui nupp on alla vajutatud, laeb registrisse PORTD kahendarvu 1111 1111, mis lülitab sisse kõik bitid ja sellega ka valgusdioodid
;Mikrokontrolleri registrinimede lisamine list p=16f877a include "p16f877a.inc" ;Muutujate defineerimine cblock 0x20 Pause Pause_tmp temp_var endc ;Programm alates aadressist 0 org 0x00 bsf STATUS,RP0 ;Valime mäluala 1 bcf STATUS,RP1 movlw b'00000000' ;Kogu portD on väljund movwf TRISD movlw b'00000000' ;Kogu portC on väljund movwf TRISC movlw .0 movwf ADCON1 ;PORTA seadistatakse analoogsisenditeks movlw b'11111111' ;Kogu portA on sisend movwf TRISA bcf STATUS,RP0 ;Valime mäluala 0
olen kuulnud, "see sõltub", "piisavalt madal, et saada signaali, piisavalt suur, et ei raiska jõudu" ja "47K". Minu mõtet viitavad on teile teada, et midagi on vaja teha, et sisendsignaali nii AVR tea selle olemasolust. Kui oled laisk (või tark), saab öelda AVR kasutada sisemist pull-ups asemel, et jama neid ise. Sadama D nagu näiteks olgem luua digitaalne Pin 2 (PD2) sisendina sisemisi pull-up: DDRD & = 0xFB; / * Jäta kõik muu bitti üksi, lihtsalt null bitti 2 * / PORTD | = 0x04 / * jäta kõik muu bitti üksi, vaid seada natuke 2 * / väärtus = PORTD & 0x04; / * Ja see ongi PIN ... * / Proovige programm lugeda lüliti ühendatud digitaalsele pin 2 ja maa, ja kasutada seda kontrollida LED. Üks võimalik lahendus on lesson3.c Õppetund 4: Serial väljund Serial on vanamoeline. Kulus mitu läbib 19. peatüki ATmega168 Andmeleht enne kõik tükid hakkasid k tulnud
Kahe sõltumatu toimingu juhtimine sama taimeriga
#include