Thông báo
Collapse
No announcement yet.
CẦN GIÚP hiệu ứng 8 led với 89c2051
Collapse
X
-
Bạn tham khảo:
sáng đuổi:
mov p1,#00h
mov a,#00h
setb c
mp1:
mov p1,a
acall delay
mov p1,#00h
rrc a
jnc mp1
ret
sáng chan lẽ:
mov p1,#01010101b
acall delay
clp p1
acall delay
ret
sang chay vao chay ra:
mov p1,#18h
acall delay
mov p1,#24h
acall delay
mov p1,#42h
acall delay
mov p1,#81h
acall delay
mov p1,#81h
acall delay
mov p1,#42h
acall delay
mov p1,#24h
acall delay
mov p1,#18h
ret
trên đó là 3 hiệu ứng, mỗi hiệu ứng chạy 1 lượt, nếu bạn cân mấy lượt thì cứ cài đặt cho nó.
delay thì tùy bạn cho chạy nhanh hay chậm mà set cho thích hợp.
chúc bạn vuiKhông biết ngày mai sẽ ra sao?
Mà có ra sao cũng chẳng sao.
-
anh viết cụ thể từ đầu đến cuối được không anh .em k biết ghép các phần với lặp lại các hiệu ứng đó nữa .học lý thuyết có 2,3 pữa nên còn gà mờNguyên văn bởi rongdatvamuc Xem bài viếtBạn tham khảo:
sáng đuổi:
mov p1,#00h
mov a,#00h
setb c
mp1:
mov p1,a
acall delay
mov p1,#00h
rrc a
jnc mp1
ret
sáng chan lẽ:
mov p1,#01010101b
acall delay
clp p1
acall delay
ret
sang chay vao chay ra:
mov p1,#18h
acall delay
mov p1,#24h
acall delay
mov p1,#42h
acall delay
mov p1,#81h
acall delay
mov p1,#81h
acall delay
mov p1,#42h
acall delay
mov p1,#24h
acall delay
mov p1,#18h
ret
trên đó là 3 hiệu ứng, mỗi hiệu ứng chạy 1 lượt, nếu bạn cân mấy lượt thì cứ cài đặt cho nó.
delay thì tùy bạn cho chạy nhanh hay chậm mà set cho thích hợp.
chúc bạn vui
Comment
-
cách viết của bạn nếu tạo mảng const gọi phần tử trong mảng ra sẽ gọn hơnNguyên văn bởi tychuot289 Xem bài viếtanh viết cụ thể từ đầu đến cuối được không anh .em k biết ghép các phần với lặp lại các hiệu ứng đó nữa .học lý thuyết có 2,3 pữa nên còn gà mờ
Comment
-
BẠN nên áp dụng cách tra bảng là tốt nhất cho bài này .Nguyên văn bởi tychuot289 Xem bài viếtai giúp e viết hết và giải thích câu lệnh được không .gần nộp bài tập rồi .gặp ông thầy gay bà điên bà khùng nữa
;**********************
xuat equ p...
org 0000
ljmp main
main:
canh1:
mov dptr,#c_trinh1
mov r0,#8
mov r1,#0
laplai1:mov a,r1
movc @a+dptr
mov xuat,a
lcall delay
inc r1
djnz r0,laplai1
canh2:
mov dptr,#c_trinh2 ; thay đổi
mov r0,#8
mov r1,#0
laplai2:mov a,r1
movc @a+dptr
mov xuat,a
lcall delay;co the thay đổi để phù hợp c trinh
inc r1
djnz r0,laplai2
ljmp.....
;***********************
delay: tu viet
ret
c_trinh1: db 01h,02h,04h,08h,10h,20h,40h,80h;chay tu trai qua phai...led sang muc 1
c_trinh2: db 10000001b,01000010b,00100100b,00011000b,00011000b, 00100100b,01000010b,10000001b
end
;bạn cố giắng học đi nhé,chứ viết như vậy là quá rỏ rồi.....
Comment
-
Chương trình đầy đủ:
$MOD51
ORG 00H
MAIN:
ACALL HIEUUNG1
ACALL HIEUUNG2
ACALL HIEUUNG3
SJMP MAIN
HIEUUNG1:
PUSH 00H
PUSH 01H
MOV DPTR,#SANGDUOI
MOV R1,#5 ;SO LUOT CHAY ?K M?I HIEU UNG LA 5 LAN
MP1:
MOV R0,#00H
MOV P1,#00H
ACALL DELAY
MP2:
MOV A,R0
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY
INC R0
CJNE R0,#8,MP2
DJNZ R1,MP1
POP 01H
POP 00H
RET
HIEUUNG2:
PUSH 00H
PUSH 01H
MOV DPTR,#SANGDAN
MOV R1,#5
MP11:
MOV R0,#00H
MOV P1,#00H
ACALL DELAY
MP22:
MOV A,R0
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY
INC R0
CJNE R0,#8,MP22
DJNZ R1,MP11
POP 01H
POP 00H
RET
HIEUUNG3:
PUSH 00H
PUSH 01H
MOV DPTR,#SANGCHANLE
MOV P1,#00H
ACALL DELAY
MOV R1,#5
MP111:
MOV R0,#00H
MP222:
MOV A,R0
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY
INC R0
CJNE R0,#2,MP222
DJNZ R1,MP111
POP 01H
POP 00H
RET
DELAY: ;DELAY 0.5S
PUSH 00H
PUSH 01H
MOV TMOD,#01H
MOV R0,#100
DEL:
MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,DEL
POP 01H
POP 00H
RET
SANGDUOI:
DB 01H,02H,04H,08H,10H,20H,40H,80H
SANGDAN:
DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
SANGCHANLE:
DB 10101010B,01010101B
ENDKhông biết ngày mai sẽ ra sao?
Mà có ra sao cũng chẳng sao.
Comment
-
đoạn đầu $MOD51Nguyên văn bởi rongdatvamuc Xem bài viếtChương trình đầy đủ:
$MOD51
ORG 00H
MAIN:
ACALL HIEUUNG1
ACALL HIEUUNG2
ACALL HIEUUNG3
SJMP MAIN
HIEUUNG1:
PUSH 00H
PUSH 01H
MOV DPTR,#SANGDUOI
MOV R1,#5 ;SO LUOT CHAY ?K M?I HIEU UNG LA 5 LAN
MP1:
MOV R0,#00H
MOV P1,#00H
ACALL DELAY
MP2:
MOV A,R0
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY
INC R0
CJNE R0,#8,MP2
DJNZ R1,MP1
POP 01H
POP 00H
RET
HIEUUNG2:
PUSH 00H
PUSH 01H
MOV DPTR,#SANGDAN
MOV R1,#5
MP11:
MOV R0,#00H
MOV P1,#00H
ACALL DELAY
MP22:
MOV A,R0
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY
INC R0
CJNE R0,#8,MP22
DJNZ R1,MP11
POP 01H
POP 00H
RET
HIEUUNG3:
PUSH 00H
PUSH 01H
MOV DPTR,#SANGCHANLE
MOV P1,#00H
ACALL DELAY
MOV R1,#5
MP111:
MOV R0,#00H
MP222:
MOV A,R0
MOVC A,@A+DPTR
MOV P1,A
ACALL DELAY
INC R0
CJNE R0,#2,MP222
DJNZ R1,MP111
POP 01H
POP 00H
RET
DELAY: ;DELAY 0.5S
PUSH 00H
PUSH 01H
MOV TMOD,#01H
MOV R0,#100
DEL:
MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,DEL
POP 01H
POP 00H
RET
SANGDUOI:
DB 01H,02H,04H,08H,10H,20H,40H,80H
SANGDAN:
DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
SANGCHANLE:
DB 10101010B,01010101B
END
ORG 00H
nghĩa là sao anh .em viết giống như anh nhưng k đc .bị lỗi gì đó .chip của em là at98c2051
Comment
-
Mình đã viết lại code cho bạn,nhưng hơi chỉnh sửa 1 chút,nếu nối mạch như bạn thì mức tích cực là 1 (thì led sáng),nhưng nếu làm mạch thực thì người ta ko làm vậy mà sẽ cho mức tích cực là 0 (vì con 89 mà ở chế độ xả dòng thì led ko đủ sáng),code mình viết lại như sau:Nguyên văn bởi tychuot289 Xem bài viếtmới học nên còn gà .ai giúp với
#include<At892051.h> // khai bao thu vien cho 89c2051
void delay (int ms) // ham tao tre
{
int i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<125;j++)
{}
}
}
// KHAI BAO MANG
unsigned char mang1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00},// SANG DON
mang2[]={0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e} ; // sang chay vao chay ra
void main()
{
int i;
while(1)
{
for(i=0;i<8;i++) // sang don
{
P1=mang1[i]; delay(300);
}
P1=0xff;delay(500);
for(i=0;i<8;i++) // sang ra-vao
{
P1=mang2[i]; delay(300);
}
P1=0xff;delay(500);
for(i=0;i<4;i++) // led chan led-sang tat
{ P1=0xaa;delay(300);
P1=0x55;delay(300);
}
P1=0xff;
delay(1500);
}
}
Last edited by viboyth.haui; 08-09-2012, 21:40.vanduc0211@gmail.com
Comment
-
lặp lại hiệu ứng vài lần thì thêm gì nữa bạn .bạn viết kiểu sáng dồn nháy từng led rồi dồn lại không .kiểu dồn của bạn là sáng dần rồi .thêm kiểu tắt dần cũng đcNguyên văn bởi viboyth.haui Xem bài viếtMình đã viết lại code cho bạn,nhưng hơi chỉnh sửa 1 chút,nếu nối mạch như bạn thì mức tích cực là 1 (thì led sáng),nhưng nếu làm mạch thực thì người ta ko làm vậy mà sẽ cho mức tích cực là 0 (vì con 89 mà ở chế độ xả dòng thì led ko đủ sáng),code mình viết lại như sau:
[ATTACH=CONFIG]51440[/ATTACH]
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 dinhthuong92Cho tới thời điểm này, quả thật Đình Thường đây quá thất vọng, không hào hứng với Suno-AI lắm bởi ra lệnh Creat mấy chục lần với các thay đổi thì mới chọn được 2 bản hát đúng giai điệu tầm 80% để cắt ghép tạo thành bài hát...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 17:01 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Kính chào cả nhà, nhân dịp Tết đang về, sắp 23 tháng chạp rồi, xin gởi lời chúc xuân qua bài hát sau ạ:
Bao nhiêu hân hoan
Chúc Mừng Năm Mới, xuân sang!
Nơi nơi hát vang
nâng chén vui chúc câu An Lành.
Vạn Sự đều Hanh Thông,
Rạng...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 16:46 -
-
bởi ittcChán quá các bác, em nhạt nhẽo quá nên tán em nào cũng tạch, tuyệt vọng vô cùng, nay lại được mấy anh đồng nghiệp cty đối tác mách cho em gái kia sinh năm 2K đầu, em chả biết nhóm đối tượng này phải tán ra sao bây giờ ?
Tính ra em...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 00:18 -
-
bởi bqvietCó thể, ví dụ phần phản hồi gồm vi mạch cách ly quang, zener thứ cấp, transistor và điện trở phản hồi dòng ... Bất kỳ linh kiện nào nhóm đó hỏng dẫn tới mất đường phản hồi. TNY chính hãng phát hiện được chuyện đó nhưng linh kiện...
-
Channel: Điện tử công suất
05-02-2026, 18:36 -
-
bởi Nexus 6Pcho e hỏi, khi mạch có linh kiện nào đó hư thì có làm hỏng led đắt tiền (osram) không?
-
Channel: Điện tử công suất
05-02-2026, 10:42 -
-
bởi chinhnguyen9· Thí nghiệm 1 (Mạch boost, Vcc=12V, kích bằng dao động PƯM, duty 10%):
* Không có snubber + không tải: Xuất hiện hiện tượng dao động tắt dần tại cực D Mosfet (ringing). Hình 1 cho thấy trong chu kỳ đầu, điện áp spike lên tới hàng trăm V, điện...-
Channel: Hướng dẫn sử dụng diễn đàn
04-02-2026, 09:16 -
-
bởi Nexus 6Pe dùng KiCad 9.0 và đã xuất được file PDF mạch in gòi bác...
-
Channel: Điện tử công suất
03-02-2026, 16:25 -
-
bởi bqvietBấm chuột vào các tệp sẽ bật ra chương trình tương ứng. Nên dùng bản KiCAD sau
https://kicad-downloads.s3.cern.ch/a...ll_version.exe-
Channel: Điện tử công suất
03-02-2026, 14:57 -
-
bởi Nexus 6Pe cài KiCAD 2012 khi mở ra nó chỉ hiện ntn...
-
Channel: Điện tử công suất
03-02-2026, 11:20 -
-
bởi bqvietThực tế bạn nào không tải được tệp nén thiết kế thì căn cứ theo ảnh sơ đồ mạch có thể vẽ lại sơ đồ bằng chương trình EDA nào đó rồi làm mạch được mà. Càng thêm quen thuộc với sơ đồ. Sau đó tùy ý chuyển sang TinySwitch-III hoặc TinySwitch-4.
-
Channel: Điện tử công suất
02-02-2026, 21:13 -

Comment