You are on page 1of 7

Họ và tên: Hồng Châu Ngọc Tuấn

Mssv: 2115167

1. Viết chương trình chép trạng thái của bit PB3 vào PA4.
.ORG 0
RJMP MAIN
.ORG 0X40
MAIN:
LDI R16,0X00
OUT DDRA,R16
LDI R16,0XFF
OUT PORTA,R16
OUT DDRB,R16

START:
SBIC PINA,3
RJMP SET
CBI PORTB,4
RJMP START
SET:
SBI PORTB,4
RJMP START

2. Viết chương trình đọc liên tục trạng thái PA6 và PA5, nếu PA6 :PA5=11 thì gửi
$AA ra PORTB, ngược lại thì gửi $55 ra PORTB.
.ORG 0
RJMP MAIN
.ORG 0X40
MAIN:
LDI R16,0X00
OUT DDRA,R16
LDI R16,0XFF
OUT PORTA,R16
OUT DDRB,R16
START:
IN R17,PINA
ANDI R17,0X60
CPI R17,0X60
BREQ OUT2
LDI R19,0X55
OUT PORTB,R19
RJMP START
OUT2:
LDI R18,0XAA
OUT PORTB,R18
RJMP START

3. Đọc trạng thái PA7, nếu PA7=1 thì lập trình PA3 chế độ xuất, ngược lại cho PA3
chế độ nhập.
.ORG 0
RJMP MAIN
.ORG 0X40
MAIN:
LDI R16,0X00
OUT DDRA,R16
LDI R16,0XFF
START:
SBIC PINA,7
RJMP XUAT
CBI DDRA,3
SBI PORTA,3
RJMP START
XUAT:
SBI DDRA,3
RJMP START

4. Viết chương trình xuất lần lượt từng bit (bắt đầu từ MSB) của giá trị nằm trong ô
nhớ địa chỉ $100 SRAM ra chân PA0 sau mỗi 1s, cho Fosc=8MHz.
; lấy giá trị từ portB , lưu vào $100 để chạy mô phỏng
.ORG 0
RJMP MAIN
.ORG 0X40
MAIN:
LDI R16,0X00
OUT DDRB,R16
LDI R16,0XFF
OUT PORTB,R16
SBI DDRA,0
SBI PORTA,0
START:
IN R16,PINB
STS 0X100,R16
LDI R17,7
LAP:
SBRS R16,7
RJMP CLR
SBI PORTA,0
ROL R16
RCALL DELAY1S
DEC R17
BRNE LAP
RJMP START
CLR:
CBI PORTA,0
ROL R16
RCALL DELAY1S
DEC R17
BRNE LAP
RJMP START

DELAY1S:
PUSH R20
PUSH R21
LDI R20,4
LOOP: LDI R21,250
LOOP1:
RCALL DELAY
DEC R21
BRNE LOOP1
DEC R20
BRNE LOOP
POP R21
POP R20
RET

DELAY:
PUSH R16
PUSH R17
LDI R16,8
L1: LDI R17,250
L2:
DEC R17
NOP
BRNE L2
DEC R16
BRNE L1
POP R17
POP R16
RET

5. Cho xung clock fx vào ngõ vào T0 (chân PB0) của timer0, viết chương trình đếm
số xung fx sau mỗi 1s. Kết quả lưu vào thanh ghi R20. Giả sử tần số fx≤200Hz.
.EQU FREQ=200;
.ORG 0
RJMP MAIN
.ORG 0X40
MAIN: LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,R16
LDI R19,0XFF
OUT DDRA,R19

CBI DDRB,0
SBI PORTB,0
LDI R16,FREQ
OUT OCR0A,R16
LDI R16,0X02
OUT TCCR0A,R16

START:
LDI R17,0
LDI R16,0X00
OUT TCCR0B,R16
OUT TCNT0,R16
LDI R16,0X06
OUT TCCR0B,R16
RCALL DELAY1S
IN R20,TCNT0
OUT PORTA,R20
RJMP START

Delay1s:
LDI R20,4
LOOP: LDI R21,250
LOOP1:
RCALL Delay
DEC R21
BRNE LOOP1
DEC R20
BRNE LOOP
RET
Delay:
LDI R16,8
L1: LDI R17,250
L2:
DEC R17
NOP
BRNE L2
DEC R16
BRNE L1
RET

6. Lập lại câu 5 với ngõ vào T1 (PB1) của Timer1. Với fx ≤ 10KHz.
.ORG 0
RJMP MAIN
.ORG 0X40
MAIN: LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,R16
LDI R19,0XFF
OUT DDRA,R19 ;OUTPUT MÃ 7 ĐOẠN LED
OUT DDRD,R19

CBI DDRB,0 ; PB0=T0 input


SBI PORTB,0 ;Điện trở kéo lên PB0
LDI R16,0XFF ;Nạp giá trị OCR0A
STS OCR1AH,R16
STS OCR1AL,R16
LDI R16,0X00;Timer0 mode CTC
STS TCCR1A,R16
LDI R16,0X08
STS TCCR1B,R16
START:
LDI R17,0
LDI R16,0X08;dừng Timer0
STS TCCR1B,R16
LDI R16,0X00
STS TCNT1H,R16 ;xóa bộ đếm
STS TCNT1L,R16
LDI R16,0X0E;đếm ngoàiT1,kích cạnh xuống
STS TCCR1B,R16
RCALL DELAY1S
LDS R19,TCNT1L ;số xung fx trong 1s lưu vào R20:R19 xuất ra PORTA VÀ
PORTD
OUT PORTA,R20
LDS R20,TCNT1H
OUT PORTD,R21
RJMP START

DELAY1S:
LDI R20,4
LOOP: LDI R21,250
LOOP1:
RCALL DELAY1MS
DEC R21
BRNE LOOP1
DEC R20
BRNE LOOP
RET
DELAY1MS:
LDI R16,10
L1: LDI R17,200
L2:
DEC R17
NOP
BRNE L2
DEC R16
BRNE L1
RET

You might also like