mình có đề tài là:"Viết chương trình hai LED ở giữa sáng bung ra, mỗi trạng thái chỉ có 2 LED sáng, lặp lại". mình viết code mà không biết viết thế nào, các bạn giúp mình viết code và mô phỏng nó bằng con ATmega 16 nhé, cảm ơn các bạn nhiều
Thông báo
Collapse
No announcement yet.
lập trình 8 led đơn và mô phỏng bằng ATmega16??
Collapse
X
-
Hic !
Dùng ngôn ngữ "chữ in hoa" thì bó tay rồi.
Tiện đây viết cho bạn đoạn ngôn ngữ C để tham khảo.
Chương trình được viết trên AVRStudio, bạn dịch sang file Hex rồi nạp vào xem có đúng ý đồ không.
8 Led được nối vào PORTC:
Thế thôi!PHP Code:#include <avr/io.h>
#include <util/delay.h>
unsigned char font[4] = {0xE7,0xDB,0xBD,0x7E};
int main(void)
{
unsigned char i = 0;
DDRC = 0xFF;
PORTC = 0xFF;
while(1)
{
for(i=0;i<4;i++)
{
PORTC = font[i];
_delay_ms(500);
PORTC = 0xFF;
}
}
}
Comment
-
các bạn xem giùm cái code này có đúng không:
;============================================
; Ten chuong trinh: dk led
; Mo ta phan cung :
; - VDK: ATmega16
; - dk 8 led gan tai Port B
; - Led sang khi Port B = 1
; - Led tat khi Port B = 0
; Mo ta phan mem:
; - Ngon ngu : AVR Assembler
; - Trinh bien dich : ATmel AVR Assembler
; - Trinh mo phong :
; + AVR Studio 4.13 Sp2
; + Protues 7.4
;============================================
.include "m16def.inc"
main:
ldi r16,$ff ;DDRB la port xuat
out DDRB,r16
ldi r16,$00 ;tat tat ca cac led
out PORTB,r16
pre_loop:
ldi r31,0b00001000
ldi r30,0b00010000
loop:
ldi r29,$00
add r29,r31
add r29,r30
out PORTB,r29
rcall delay ;khong nen dung khi
;mo phong voi AVR Studio
cpi r29,$00 ;if (r29==0)
breq pre_loop ; pre_loop
lsr r31 ;r31>>1
lsl r30 ;r30<<1
rjmp loop
delay:
ldi r16,250
loop0:
ldi r17,250
loop1:
dec r17
cpi r17,$00
brne loop1
dec r16
cpi r16,$00
brne loop0
ret
Comment
-
bạn sửa thành thế này
Tần số thạch anh khi mô phỏng trong proteus đặt 1MHz thì nhìn rõ.
Nếu cần kéo dài thêm thời gian delay.
;===============================
.include "m16def.inc"
main:
ldi r16,$ff ;DDRB la port xuat
out DDRB,r16
ldi r16,$00 ;tat tat ca cac led
out PORTB,r16
pre_loop:
ldi r30,0b00001000 ;high
ldi r31,0b00010000 ;low
ldi r28,0
loop:
lsl r30
lsr r31
mov r29,r30
or r29,r31
cpi r29,$00 ;if (r29==0)
breq pre_loop ;pre_loop
out PORTB,r29
jmp delay
rjmp loop
delay:
ldi r16,250
loop0:
ldi r17,250
loop1:
dec r17
cpi r17,$00
brne loop1
dec r16
cpi r16,$00
brne loop0
jmp loop
retLast edited by hungnp; 03-11-2009, 07:03.
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phamCháu nghe thử trên youtube xem sao? : https://www.youtube.com/watch?v=Opm0BszTmFQ...
-
Channel: Tâm tình dân kỹ thuật
02-05-2026, 21:23 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Cháu không vào được để nghe thử. Mời bác nghe thử bản phối điệu Techno này xem thế nào nhé! Chúc bác vui.
( Cháu nhìn lyrics và cứ thế một mmạch hát demo rồi đưa vào suno. nó hát đạt 80% melody!)...-
Channel: Tâm tình dân kỹ thuật
27-04-2026, 17:00 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Bài này cháu phải "Creat" trên 30 lần rồi cắt ghép mới tạm có hồn tí đó bác. Quá nản luôn!!!
HẸN ƯỚC XUÂN SANG
Sáng tác: Hoàng Đình Thường
Hòa âm & hát: Suno AI
---25/04/2026----
[Verse 1]
Gió...-
Channel: Tâm tình dân kỹ thuật
25-04-2026, 11:05 -

Comment