Nguyên văn bởi MinhNhat_dhv
Xem bài viết
Thông báo
Collapse
No announcement yet.
Lập trình Led bằng C dùng 8051
Collapse
X
-
Em cảm ơn ý kiến quý báu của các bác. Em sẽ ghi nhận và làm thử. Trong khi em chờ các bác giúp đỡ thì em có thử viết một đoạn code bằng C dùng ngắt. Nhưng ko hiểu sao khi em mô phỏng thì chỉ có viền chạy mà chữ thì ko chạy. Chương trình xử lý ngắt em dùng để chạy viền. Như vậy trong suốt chương trình điều kiện ngắt luôn đc thoả mãn. Mong các bác tìm xem lỗi trong chương trình of em là ở đâu. Em cảm ơn.
//CHUONG TRINH DIEU KHIEN LED
#include <REGX52.H>
//*******************************************
#define led_1 P0_0
#define led_2 P0_1
#define led_3 P0_2
#define led_4 P0_3
#define led_5 P0_4
#define led_6 P0_5
#define led_7 P0_6
#define led_8 P0_7
#define led_9 P2_0
#define led_10 P2_1
#define led_11 P2_2
#define led_12 P2_3
#define vien_1 P2_4
#define vien_2 P2_5
#define vien_3 P2_6
//********************************************
unsigned char i;
void delay_ms(unsigned int time);
//CHUONG TRINH PHUC VU NGAT
void inter_1(void) interrupt 1
{
while(!TF0)
{
TF0=0;
TR0=0;
vien_1=0; vien_2=0; vien_3=1;
delay_ms(200);
vien_1=1; vien_2=0;vien_3=0;
delay_ms(200);
vien_1=0; vien_2=1;vien_3=0;
delay_ms(200);
}
}
void delay_ms(unsigned int time)
{
while(time--)
{
unsigned char t=121;
while(t--);
}
}
void tat_ca (void)
{
led_1=led_2=led_3=led_4=led_5=led_6=led_7=led_8=le d_9=led_10=led_11=led_12=1;
}
void sang_don_a_ab_abc (void)
{
for(i=1;i<=12;i++)
{
switch(i)
{
case 1: led_1=0; break;
case 2: led_2=0; break;
case 3: led_3=0; break;
case 4: led_4=0; break;
case 5: led_5=0; break;
case 6: led_6=0; break;
case 7: led_7=0; break;
case 8: led_8=0; break;
case 9: led_9=0; break;
case 10: led_10=0; break;
case 11: led_11=0; break;
case 12: led_12=0; break;
}
delay_ms(100);
}
delay_ms(1500);
for(i=1;i<=12;i++)
{
switch(i)
{
case 1: led_1=1; break;
case 2: led_2=1; break;
case 3: led_3=1; break;
case 4: led_4=1; break;
case 5: led_5=1; break;
case 6: led_6=1; break;
case 7: led_7=1; break;
case 8: led_8=1; break;
case 9: led_9=1; break;
case 10: led_10=1; break;
case 11: led_11=1; break;
case 12: led_12=1; break;
}
delay_ms(100);
}
}
void chay_cheo (void)
{
for(i=1;i<=11;i++)
{
switch(i)
{
case 1: led_1=led_12=0; break;
case 2: led_1=led_12=1; led_2=led_11=0; break;
case 3: led_2=led_11=1; led_3=led_10=0; break;
case 4: led_3=led_10=1; led_4=led_9=0; break;
case 5: led_4=led_9=1; led_5=led_8=0; break;
case 6: led_5=led_8=1; led_6=led_7=0; break;
case 7: led_6=led_7=1; led_5=led_8=0; break;
case 8: led_5=led_8=1; led_4=led_9=0; break;
case 9: led_4=led_9=1; led_3=led_10=0; break;
case 10: led_3=led_10=1; led_2=led_11=0; break;
case 11: led_2=led_11=1; led_1=led_12=0; break;
}
delay_ms(100);
}
}
void interrupt_setup(void)
{
EA=1;
ET0=1;
TMOD=0x01;
TH0=0xFC;
TL0=0x18;
TR0=1;
}
void main (void)
{
while(1)
{
interrupt_setup();
tat_ca();
delay_ms(200);
sang_don_a_ab_abc();
delay_ms(200);
chay_cheo();
chay_cheo();
chay_cheo();
}
}
Comment
-
Bác có tài liệu về cái đó ko? bác share cho em với. Hiện em đang dùng 8051 bác nhé. Đây là mail of em: Nhat.dt.dhv@gmail.comNguyên văn bởi vuxuanloi Xem bài viếtBạn có thể dùng realtime os mà viết,
Comment
-
Mình có code rất dễ hiểu bằng asm của 1 bạn viết cho mình . Bạn đọc nhé
org 000h
cuong:
mov p1,#10000000b
lcall tre
lcall vien
mov p1,#01000000b
lcall tre
lcall vien
mov p1,#00100000b
call tre
call vien
mov p1,#00010000b
call tre
call vien
ljmp cuong
vien:
mov p1,#00000001b
lcall tre
mov p1,#00000011b
lcall tre
mov p1,#00000111b
lcall tre
ret
tre:
mov r0,#255
aa: mov r4,#255
dd: djnz r4,dd
djnz r0,aa
ret
end
Comment
Bài viết mới nhất
Collapse
-
bởi afrendlyCảm ơn bạn. Mình hỏi để thợ có thể tham khảo thôi chứ không đủ kiển thức để sửa, mà cũng không có đồ nghề, mua đồ nghề quá tiền máy. Gọi nhiều lần mà thợ hẹn mãi chưa có tới ấy bạn. Mình muốn sửa được chứ bỏ thì uống, nhưng sợ là được mỗi người thợ mà lại không sửa nổi....
-
Channel: Điện tử gia dụng
hôm nay, 00:34 -
-
bởi mèomướpDạ nó bị tắc ẩm hoặc rò thiếu gas hoặc lốc yếu hoặc van tiết lưu có vấn đề hoặc tất cả những nguyên nhân trên ạ. Chú ko chuyên về mảng này thì bán đi, giành thời gian trồng rau sạch đem ra chợ bán lấy tiền mua tủ mới ạ. Còn...
-
Channel: Điện tử gia dụng
Hôm qua, 17:01 -
-
bởi afrendlyXin chào mọi người. Mình lại có vấn đề về đồ điện cần nhờ mọi người hỗ trợ giúp. Mình có tủ lạnh Sharp dùng cũng lâu rồi. Trước có bị kém lạnh, không đông đá thì có thợ họ mang về, sục đường ga gì đó hết 900k và đã dùng...
-
Channel: Điện tử gia dụng
Hôm qua, 16:53 -
-
bởi dinhthuong92Đấy, cái tôi thắc mắc là chỗ màu hồng ấy bạn, để áp vào cao chứ không bị sụt gần bằng áp pin thì rất cần cuộc cảm để làm điều đó. Tuy nhiên, trong công thức bác thớt dẫn không thấy mặt L, và một vài mạch MPPT tôi đã kiểm...
-
Channel: Nguồn!
09-05-2026, 10:01 -
-
bởi mèomướpDạ mạch sạc là 1 cục nguồn, nó sẽ điều chỉnh công suất đầu ra để có tổng trở bằng nội trở của pin ạ. Và cái cách nó chỉnh công suất đầu ra sẽ là dạng buck, boot. Đều cần đến cuộn cảm ạ. Tất nhiên chú thích thì có thể dùng dạng tuyến tính transistor để bù trừ nhưng mà nó đốt năng lượng vô ích ạ...
-
Channel: Nguồn!
08-05-2026, 16:26 -
-
bởi dinhthuong92Tng trở R của tải (gồm pin và mạch sạc) trong công thức đó rõ ràng khống có L xuất hiện. Nếu tính các dây dẫn thì rất nhỏ, bỏ qua. Vì nội trở pin là rất nhỏ, có thể nói luôn lớn hơn nội trở solar, nên mạch MPPT sẽ hầu như luôn tính...
-
Channel: Nguồn!
08-05-2026, 11:00 -
-
bởi dinhthuong92Chào bác. Đã là công thức phải tổng quát chứ, nó phải thể hiện cả quá trình, rối thì quá độ hay xác lập tính sau vì tùy điều kiện. Cũng như công thức tính diện tích chả hạn, phải là tích phân....
-
Channel: Nguồn!
08-05-2026, 10:49 -

Comment