Professional Documents
Culture Documents
Nhóm:
Nhóm môn học: Môn thí nghiệm:
Nhóm: 05
Nhóm môn học: L02
Môn thí nghiệm: Thí nghiệm vi xử lý
SV1: Nguyễn Minh Nhật
SV2: Hồng Châu Ngọc Tuấn
SV3: Nguyễn Đăng Khoa
BÀI 1
1. Trả lời các câu hỏi
a. Khoảng thời gian trễ lớn nhất có thể tạo ra bởi timer 0 với tần số 8Mhz là bao
nhiêu? Trình bày cách tính toán
Với Fosc = 8Mhz Tosc = 0,125us
Ta có: TDL = n x Tosc x N.
Muốn TDL max thì nxN max N = 1024 và n = 256.
Khi đó TDL = 256 x 0.125uS x 1024 = 0.032768 s
b. Khoảng thời gian trễ lớn nhất có thể tạo ra bởi timer 1 với tần số 8Mhz là bao
nhiêu? Trình bày cách tính toán
Với Fosc = 8Mhz Tosc = 0,125us
Ta có: TDL = n x Tosc x N.
Muốn TDL max thì nxN max N = 1024 và n = 2^15.
Khi đó TDL = 2^15 x 0.125uS x 1024 4,19 s
c. Trình bày cách tính prescaler và các giá trị nạp vào các thanh ghi của timer0 trong
bài thí nghiệm
Ở mode NOR các bit WGM03:WGM02:WGM01 = 000
Suy ra bit 1 và bit 0 của thanh ghi TCCR0A = 00 và bit 3
của thanh ghi TCCR0B = 0
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
.ORG 0
LDI R16, 0
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
MAIN:
SBI PORTA, 0
CALL DELAY_1MS
CBI PORTA, 0
CALL DELAY_1MS
RJMP MAIN
DELAY_1MS:
HERE:
RJMP HERE
LDI R16, 0
RET
BÀI 2
1. Trả lời các câu hỏi
a) Ở mode Normal, khi nào bit TOVx được set lên 1?
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
c) Giá trị các thanh ghi cấu hình cho timer 0 cho 2 trường hợp
Mode NOR TCNT0 = -125, TCCR0A = $00, TCCR0B = $03
Mode CTC OCR0A = 255, TCCR0A = $02, TCCR0B = $01
d) Viết chương trình tạo 1 xung vuông 64 us sử dụng timer 0 ở chế độ Normal
mode. Ngõ ra sử dụng chân OC0
.ORG 0
CLR R16
MAIN:
SBI PORTC,0
RCALL DELAY_32US
CBI PORTC,0
RCALL DELAY_32US
RJMP MAIN
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
DELAY_32US:
WAIT:
RJMP WAIT
RET
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
Viết chương trình thực hiện tạo xung vuông có chu kỳ 64 us sử dụng timer 1 ở chế độ CTC mode.
Ngõ ra sử dụng chân OC0.
.ORG 0
SBI DDRC,0
LP:
CBI PORTC,0
RCALL DELAY32US
SBI PORTC,0
RCALL DELAY32US
RJMP LP
DELAY32US:
LDI R17,0X00;
STS OCR1AH,R17
LDI R17,0X03;
LDI R17,0X00
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
LDI R17,0X10
LDI R17,0X00
WAIT:
SBIS TIFR1,OCF1A
RJMP WAIT
SBI TIFR1,OCF1A
LDI R17,0X00
RET
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
BÀI 3
1. Trả lời các câu hỏi
a. Dạng sóng trên oscilloscope (chụp và chèn vào)
b. Giải thích lý do có dạng sóng (tần số, chu kỳ làm việc, phase) như kết quả
BÀI 4
1. Trả lời các câu hỏi
a. Các mode làm việc của timer 0 ứng với các giá trị trên bảng
TH_1: Mode FPWM (TOP: $FF)
TH_2: Mode FPWM (TOP: OCR0A)
TH_3: Mode PCPWM (TOP: $FF)
2. Chụp ảnh các dạng sóng ứng với các mode làm việc và giải thích.
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
BÀI 5
1. Trả lời các câu hỏi
a. Timer 0 làm việc ở mode nào?
Mode: CTC
b. Giá trị đưa vào các thanh ghi của timer 0 là bao nhiêu? Giải thích
TCCR0A: 0b00010010, TCCR0B: $03, OCR0A: các giá trị tính toán khi code
2. Trình bày mã nguồn với chú thích.
.ORG 0
RJMP MAIN
.ORG $100
CBI PORTB, 4
LDI R18,3
T: RCALL DELAY1CHIA4MS
DEC R18
BRNE T
RJMP MAIN1
LDI R17,0X02
RJMP WAIT
LDI R17, 0
RET
Kết nối OC0B vào kênh R của 1 LED RGB. Viết chương trình để tăng duty cycle trên OC0B từ
0% lên 100% rồi lại giảm xuống 0, sau 10 ms duty cycle tăng/giảm 1%.
.ORG 0
RJMP MAIN
.ORG 0x40
MAIN:
LDI SIGN_H, 0
LDI R16, (1<<WGM01) | (1<<COM0B0) ;Mode CTC dao bit OC0B khi dat kqua so sanh
START:
CAU_C:
WAVE_C:
WAIT_C_H:
WAIT_C_L:
DEC R23
BRNE AGAIN
LDI R23, 10
INC R24
BREQ CHANGE_RULE ;Thay doi viec cong tru cac thanh ghi
CONTI:
RJMP CHANGE_VALUE
INC SIGN_H
DEC SIGN_L
RJMP AGAIN
CHANGE_RULE:
CLR R24
LDI R26,$01
RJMP CONTI
CHANGE_VALUE:
DEC SIGN_H
INC SIGN_L
AGAIN:
RJMP WAIT_C_H
RET
CAU_A:
WAVE_A:
WAIT_A:
LPM R16, Z+
DEC R22
BRNE WAIT_A
LDI R22, 2
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
RJMP WAIT_A
RET
DATA_A:
.DB 92, 30
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
BÀI 2
2. Trả lời các câu hỏi
a. Để có tần số quét là 50Hz, một LED sẽ sáng 1 lần trong bao lâu?
i. Khi tần số quét là 50Hz, thời gian giữa hai lần quét liên tiếp là
1/50 = 0.02 giây.
ii. Thời gian = 0.02 giây / 4 = 0.005 giây = 5 ms
b. Cấu hình timer như thế nào để có độ trễ này
i. Cấu hình timer0 mode NOR với giá trị nạp cho TCNT0 là -156
3. Mã nguồn và chú thích
.include "m324PAdef.inc"
.ORG 0
RJMP MAIN
.ORG 40
MAIN:
SER R16
OUT OUTLED_DDR,R16
LDI R16,(1<<nLE0)|(1<<nLE1)
OUT SL_LED_DDR,R16
START:
RCALL SCAN_4LA
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
RJMP START
;------------------------------------------
SCAN_4LA:
LOOP:
MOV R17,R20
INC R20
RET
;------------------------------------------------------------
DELAY_5MS:
PUSH R17
PUSH R16
OUT TCCR0A,R16
POP R16
POP R17
RET
;-----------------------------------------
GET_7SEG:
LDI R17, 0
RET
;-------------------------------------------
TAB_7SA:
BÀI 3
2. Trả lời các câu hỏi
Khi tính toán PORTA * 9, kết quả tối đa có thể đạt được là 255 * 9 = 2295, và kết quả này cần
tối thiểu 12 bit để biểu diễn.Trong trường hợp này, ta cần sử dụng thanh ghi 16-bit để lưu trữ kết
quả, bất kể số lượng bit cần thiết để biểu diễn kết quả. Tuy nhiên, vì ta chỉ sử dụng 11 bit để tính
toán, nên chỉ cần 16 bit để lưu trữ kết quả. Các bit còn lại của thanh ghi 16-bit này sẽ không
được sử dụng và được giữ giá trị bằng 0 hoặc 1 tùy thuộc vào kiến trúc của vi xử lý.
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
.ORG 0
TABLE_7SEG_DATA:
.DB 0XC0, 0XF9, 0XA4, 0XB0, 0X99, 0X92, 0X82, 0XF8, 0X80,
0X90, 0X88, 0X83, 0XC6, 0XA1, 0X86, 0X8E
TABLE_7SEG_CONTROL:
;INIT LED_7_SEG_PORT
CLR R20
SER R20
CLR R16
CLR R26
CLR R27
CLR R18
MAIN:
RCALL MUL_PORTA_9
MOV R27, R4
RCALL DISPLAY_7SEG
INC R26
RCALL DELAY5MS
MOV R27, R5
RCALL DISPLAY_7SEG
INC R26
RCALL DELAY5MS
MOV R27, R6
RCALL DISPLAY_7SEG
INC R26
RCALL DELAY5MS
MOV R27, R7
RCALL DISPLAY_7SEG
RCALL DELAY5MS
CLR R26
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
RJMP MAIN
DELAY5MS:
WAIT:
IN R17, TIFR0
RJMP WAIT
RET
DISPLAY_7SEG:
SER R16
SBI LED_7SEG_LATCH_PORT, 5
CBI LED_7SEG_LATCH_PORT, 5
PUSH R16
CLR R16
LPM R16, Z
NOP
CLR R16
LPM R16, Z
NOP
POP R16
RET
MUL_PORTA_9:
IN INPUT, DIP_SW_PIN
PUSH R16
LDI R16, 9
MOV AL, R0
MOV AH, R1
RCALL DIV1616
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
MOV AL, R0
MOV AH, R1
RCALL DIV1616
MOV AL, R0
MOV AH, R1
RCALL DIV1616
MOV AL, R0
MOV AH, R1
RCALL DIV1616
POP R16
RET
DIV1616:
PUSH AL
PUSH AH
PUSH BL
PUSH BH
PUSH C
CLR REMH ;
ROL ANSH ;
ROL REMH ;
SBC REMH,BH
ADC REMH,BH ;
RJMP LOOP
DONE:
POP C
POP BH
POP BL
POP AH
POP AL
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
RET
.DB 0XC6,0XA1,0X86,0X8E
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
BÀI 4
1. Trả lời các câu hỏi
a. Mô tả kết nối trên kit
b. Để có tần số quét 25Hz thì một cột LED sáng trong bao lâu?
i. Thời gian một chu kỳ quét (period) được tính bằng công thức:
+ period = 1 / tần số quét
ii. Với tần số quét là 25Hz, ta có:
+ period = 1 / 25 = 0.04 giây.
iii. Do đó, thời gian một cột LED sáng trong ma trận được tính bằng
công thức:
+ Thời gian một cột LED sáng = period / n
iv. Với LED ma trận 8x8 nên ta có n=8
v. Thời gian một cột LED sáng = 0.04 giây / 8 = 0.005 giây = 5 ms
c. Sự khác nhau khi quét ở tần số 25Hz và 125Hz
Với tần số quét 25Hz, thời gian giữa hai lần quét liên tiếp là 1/25 = 0.04 giây. Trong
khoảng thời gian đó, các LED trong ma trận sẽ được kích hoạt và sáng tuần tự theo thứ tự
quét. Vậy mỗi LED trong ma trận sẽ sáng trong khoảng thời gian 0.04 giây / số lượng LED.
Nếu số lượng LED trong ma trận là 64, thì mỗi LED sẽ sáng trong khoảng 0.04 giây / 64 =
0.000625 giây = 625 micro-giây
Tuy nhiên, với tần số quét 125Hz, thời gian giữa hai lần quét liên tiếp là 1/125 = 0.008 giây.
Khi đó, thời gian mỗi LED được kích hoạt và sáng sẽ là 0.008 giây / số lượng LED. Với
cùng một ma trận LED có 64 LED, thì mỗi LED sẽ sáng trong khoảng thời gian 0.008 giây /
64 = 0.000125 giây = 125 micro-giây.
.INCLUDE "M324PADEF.INC"
.ORG 0X0000
RJMP RESET_HANDLER
.ORG 0X001A
RJMP TIMER1_COMP_ISR
RESET_HANDLER:
CALL SHIFTREGISTER_INITPORT
CALL SHIFTREGISTER_CLEARDATA
CALL INITTIMER1CTC
SEI
CALL LEDMATRIX_PORTINIT
MAIN:
JMP MAIN
.EQU CLEARSIGNALPIN = 3
.EQU SHIFTCLOCKPIN = 2
.EQU LATCHPIN = 1
.EQU SHIFTDATAPIN = 0
SHIFTREGISTER_INITPORT:
PUSH R24
LDI R24,
(1<<CLEARSIGNALPIN)|(1<<SHIFTCLOCKPIN)|(1<<LATCHPIN)|(1<<SHIFTDATAPIN)
;
POP R24
RET
SHIFTREGISTER_CLEARDATA:
RET
SHIFTREGISTER_SHIFTOUTDATA:
PUSH R18
LDI R18, 8
SHIFTLOOP:
SBRC R27, 7
LSL R27
DEC R18
BRNE SHIFTLOOP
POP R18
RET
.DSEG
.ORG SRAM_START
LEDMATRIXBUFFER : .BYTE 8
LEDMATRIXCOLINDEX : .BYTE 1
.CSEG
.ALIGN 2
LEDMATRIX_PORTINIT:
PUSH R20
PUSH R21
LDI R20,0
LDI R31,HIGH(LEDMATRIXCOLINDEX)
LDI R30,LOW(LEDMATRIXCOLINDEX)
ST Z,R20
LDI R20,0
LDI R29,HIGH(LEDMATRIXBUFFER)
LDI R28,LOW(LEDMATRIXBUFFER)
LDI R20,8
LEDMATRIX_PORTINIT_LOOP:
LPM R21,Z+
ST Y+,R21
DEC R20
CPI R20,0
BRNE LEDMATRIX_PORTINIT_LOOP
POP R21
POP R20
RET
LEDMATRIX_DISPLAY_COL:
PUSH R16
PUSH R27
CLR R16
OUT LEDMATRIXPORT,R16
CALL SHIFTREGISTER_SHIFTOUTDATA
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
CLR R16
ADD R30,R26
ADC R31,R16
LPM R27,Z
OUT LEDMATRIXPORT,R27
POP R27
POP R16
RET
INITTIMER1CTC:
PUSH R16
POP R16
RET
TIMER1_COMP_ISR:
PUSH R16
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
PUSH R26
PUSH R27
LDI R31,HIGH(LEDMATRIXCOLINDEX)
LDI R30,LOW(LEDMATRIXCOLINDEX)
LD R16,Z
MOV R26,R16
LDI R31,HIGH(LEDMATRIXBUFFER)
LDI R30,LOW(LEDMATRIXBUFFER)
ADD R30,R16
CLR R16
ADC R31,R16
LD R27,Z
CALL LEDMATRIX_DISPLAY_COL
INC R26
CPI R26,8
BRNE TIMER1_COMP_ISR_CONT
LDI R26,0
TIMER1_COMP_ISR_CONT:
LDI R31,HIGH(LEDMATRIXCOLINDEX)
LDI R30,LOW(LEDMATRIXCOLINDEX)
ST Z,R26
POP R27
POP R26
POP R16
RETI
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
.INCLUDE "M324PADEF.INC"
.ORG 0X0000
RJMP RESET_HANDLER
.ORG 0X001A
RJMP TIMER1_COMP_ISR
RESET_HANDLER:
CALL SHIFTREGISTER_INITPORT
CALL SHIFTREGISTER_CLEARDATA
CALL INITTIMER1CTC
SEI
CALL LEDMATRIX_PORTINIT
MAIN:
JMP MAIN
.EQU SHIFTCLOCKPIN = 2
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
.EQU LATCHPIN = 1
.EQU SHIFTDATAPIN = 0
SHIFTREGISTER_INITPORT:
PUSH R24
LDI R24,
(1<<CLEARSIGNALPIN)|(1<<SHIFTCLOCKPIN)|(1<<LATCHPIN)|(1<<SHIFTDATAPIN)
;
POP R24
RET
SHIFTREGISTER_CLEARDATA:
RET
SHIFTREGISTER_SHIFTOUTDATA:
PUSH R18
LDI R18, 8
SHIFTLOOP:
SBRC R27, 7
LSL R27
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
DEC R18
BRNE SHIFTLOOP
POP R18
RET
.DSEG
.ORG SRAM_START
LEDMATRIXBUFFER : .BYTE 8
LEDMATRIXCOLINDEX : .BYTE 1
.CSEG
.ALIGN 2
LEDMATRIX_PORTINIT:
PUSH R20
PUSH R21
LDI R20,0
LDI R31,HIGH(LEDMATRIXCOLINDEX)
LDI R30,LOW(LEDMATRIXCOLINDEX)
ST Z,R20
LDI R20,0
LDI R29,HIGH(LEDMATRIXBUFFER)
LDI R28,LOW(LEDMATRIXBUFFER)
LDI R20,8
LEDMATRIX_PORTINIT_LOOP:
LPM R21,Z+
ST Y+,R21
DEC R20
CPI R20,0
BRNE LEDMATRIX_PORTINIT_LOOP
POP R21
POP R20
RET
LEDMATRIX_DISPLAY_COL:
PUSH R16
PUSH R27
CLR R16
OUT LEDMATRIXPORT,R16
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
CALL SHIFTREGISTER_SHIFTOUTDATA
CLR R16
ADD R30,R26
ADC R31,R16
LPM R27,Z
OUT LEDMATRIXPORT,R27
POP R27
POP R16
RET
PUSH R16
LDI R16, HIGH(31) //DO DELAY 1MS VÀ CHIA 256 NÊN CẦN PHẢI
THIẾT LẬP 16 XUNG. 250/8=31
POP R16
RET
TIMER1_COMP_ISR:
PUSH R16
PUSH R26
PUSH R27
LDI R31,HIGH(LEDMATRIXCOLINDEX)
LDI R30,LOW(LEDMATRIXCOLINDEX)
LD R16,Z
MOV R26,R16
LDI R31,HIGH(LEDMATRIXBUFFER)
LDI R30,LOW(LEDMATRIXBUFFER)
ADD R30,R16
CLR R16
ADC R31,R16
LD R27,Z
CALL LEDMATRIX_DISPLAY_COL
INC R26
CPI R26,8
BRNE TIMER1_COMP_ISR_CONT
LDI R26,0
TIMER1_COMP_ISR_CONT:
LDI R31,HIGH(LEDMATRIXCOLINDEX)
LDI R30,LOW(LEDMATRIXCOLINDEX)
ST Z,R26
POP R27
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
POP R26
POP R16
RETI
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
.include "m324PAdef.inc"
.ORG 0
RJMP MAIN
.ORG 40
MAIN:
SER R16
OUT OUTLED_DDR,R16
LDI R16,(1<<nLE0)|(1<<nLE1)
OUT SL_LED_DDR,R16
START:
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
RCALL SCAN_4LA
RJMP START
;------------------------------------------
SCAN_4LA:
CLR R20 ;TẠO THANH GHI TRUNG GIAN DÙNG TRA BẢNG
LOOP:
CBI SL_LED ,nLE1 ;khóa U5 // XUẤT MÃ ĐK CHỌN LED // TẮT HẾT LED
MOV R17,R20
INC R20
SEC ;C=1 chuẩn bị quay trái GÁN VÀO LẦN KẾ TIẾP F7 THÀNH FE
THÀNH FD.....
RET
;------------------------------------------------------------
DELAY_5MS:
PUSH R17
PUSH R16
OUT TCCR0A,R16
WAIT:SBIS TIFR0,OCF0A ;chờ cờ OCF0A=1 báo kết quả so sánh kênh A 2/1MC
POP R16
POP R17
RET
;-----------------------------------------
GET_7SEG:
LDI R17, 0
RET
;-------------------------------------------
TAB_7SA:
.INCLUDE "M324PADEF.INC"
.ORG 0X0000
RJMP RESET_HANDLER
.ORG 0X001A
RJMP TIMER1_COMP_ISR
RESET_HANDLER:
CALL SHIFTREGISTER_INITPORT
CALL SHIFTREGISTER_CLEARDATA
CALL INITTIMER1CTC
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
SEI
CALL LEDMATRIX_PORTINIT
MAIN:
JMP MAIN
.EQU SHIFTCLOCKPIN = 2
.EQU LATCHPIN = 1
.EQU SHIFTDATAPIN = 0
SHIFTREGISTER_INITPORT:
PUSH R24
LDI R24,
(1<<CLEARSIGNALPIN)|(1<<SHIFTCLOCKPIN)|(1<<LATCHPIN)|(1<<SHIFTDATAPIN);
POP R24
RET
SHIFTREGISTER_CLEARDATA:
RET
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
SHIFTREGISTER_SHIFTOUTDATA:
PUSH R18
LDI R18, 8
SHIFTLOOP:
SBRC R27, 7
LSL R27
DEC R18
BRNE SHIFTLOOP
POP R18
RET
LEDMATRIX_COL_CONTROL: .DB 0X80, 0X40, 0X20, 0X10, 0X08, 0X04, 0X02, 0X01
.DSEG
.ORG SRAM_START
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
LEDMATRIXBUFFER : .BYTE 8
LEDMATRIXCOLINDEX : .BYTE 1
.CSEG
.ALIGN 2
LEDMATRIX_PORTINIT:
PUSH R20
PUSH R21
LDI R20,0
LDI R31,HIGH(LEDMATRIXCOLINDEX)
LDI R30,LOW(LEDMATRIXCOLINDEX)
ST Z,R20
LDI R20,0
LDI R29,HIGH(LEDMATRIXBUFFER)
LDI R28,LOW(LEDMATRIXBUFFER)
LDI R20,8
LEDMATRIX_PORTINIT_LOOP:
LPM R21,Z+
ST Y+,R21
DEC R20
CPI R20,0
BRNE LEDMATRIX_PORTINIT_LOOP
POP R21
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
POP R20
RET
LEDMATRIX_DISPLAY_COL:
PUSH R16
PUSH R27
CLR R16
OUT LEDMATRIXPORT,R16
CALL SHIFTREGISTER_SHIFTOUTDATA
CLR R16
ADD R30,R26
ADC R31,R16
LPM R27,Z
OUT LEDMATRIXPORT,R27
POP R27
POP R16
RET
PUSH R16
LDI R16, HIGH(31) //DO DELAY 1MS VÀ CHIA 256 NÊN CẦN PHẢI THIẾT LẬP 16 XUNG.
250/8=31
POP R16
RET
TIMER1_COMP_ISR:
PUSH R16
PUSH R26
PUSH R27
LDI R31,HIGH(LEDMATRIXCOLINDEX)
LDI R30,LOW(LEDMATRIXCOLINDEX)
LD R16,Z
MOV R26,R16
LDI R31,HIGH(LEDMATRIXBUFFER)
LDI R30,LOW(LEDMATRIXBUFFER)
ADD R30,R16
CLR R16
ADC R31,R16
LD R27,Z
CALL LEDMATRIX_DISPLAY_COL
INC R26
CPI R26,8
BRNE TIMER1_COMP_ISR_CONT
LDI R26,0
BÁO CÁO
Nhóm:
Nhóm môn học: Môn thí nghiệm:
TIMER1_COMP_ISR_CONT:
LDI R31,HIGH(LEDMATRIXCOLINDEX)
LDI R30,LOW(LEDMATRIXCOLINDEX)
ST Z,R26
POP R27
POP R26
POP R16
RETI