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
-
Nguyê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
-
Trả lời cho Tìm linh kiện sửa loa vi tính.bởi nhathung1101Ra cửa hàng điện tử bất kỳ.
Dõng dạc hét lên:
- Cho 1 con 4558.
Có luôn. Nó chỉ là con Opamp cùi bắp thông thường thôi mà. Giá 2k hay 3k gì đó.
Nếu muốn âm thanh hay hơn, thì mua NE5535, mất 2 cốc beer thôi.-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 22:38 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi nhathung1101Mạch dùng được, nhưng phải kết hợp với Transistor NPN công suất bên ngoài. Loại chịu điện áp cao, dòng lớn.
Loại mạch này nhái theo cái loại IC họ STR trong mấy cái ti vi cổ lỗ ngày xưa thôi mà. Còn được gọi là "ổn áp...-
Channel: Hướng dẫn tìm thông tin linh kiện
hôm nay, 22:28 -
-
Trả lời cho Tìm linh kiện sửa loa vi tính.bởi Nikon57
-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 21:36 -
-
bởi Nikon57Bộ loa vi tính Microlap cũ của tôi tầng tiền khuyêchs đại bị lỗi. Sau kiểm tra , nguyên nhân là do con chíp 4558D JRC 0077C chết nóng rực. Không thêt tìm được con IC đúng nguyên mã như vậy, để thay thế tôi có thể thay bawngfcon IC 4558 JRC 0058T được không? Mong các bác thành thạo cho ý kiến.
-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 21:36 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi dinhthuong80Mạch trên nếu dùng vào việc khác ( theo người thiết kế ra nó) thì cũng được: làm mạch tiền khuếch đại (pre-Amply) cho "con sò công suất" hay mạch công suất, để chạy cái loa cũng tạm ok.
Các chữ E,B,C trên mạch trên gắn...-
Channel: Hướng dẫn tìm thông tin linh kiện
hôm nay, 16:47 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi iTronvây là mình đã hiểu lí do vì sao ông ấy lại đưa mình nguyên hộp có hơn chục cái mạch này trong đó...
-
Channel: Hướng dẫn tìm thông tin linh kiện
hôm nay, 12:21 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi mèomướpDạ mạch này hông dùng được ạ. Chú sang chị hàng xóm mượn cái cuốc kiếm góc nào trong bản có nhìu người qua lại để trồng 1 cây cải ngồng, ngày ngày chú chịu khó qua đấy tưới chăm cho nó lớn ạ, vài tháng sau nó to chú mang ra chợ bán...
-
Channel: Hướng dẫn tìm thông tin linh kiện
hôm nay, 12:13 -
-
bởi iTronEm được ông anh cho mạch như hình, nhờ ace trong diễn đàn xem giúp mạch này dùng ổn ko và dùng linh kiện công suất nào thì phù hợp.
Xin cảm ơn...-
Channel: Hướng dẫn tìm thông tin linh kiện
hôm nay, 11:27 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Vì sản phẩm của họ dân mình có dùng, và có lẽ cũng không phải là không phổ biến, nên ĐT quyết định gởi thư điện tử tiếng Anh cho họ như sau, ( đã sửa vài từ như được góp ý, vì nếu lịch sự thì dù vòng vo cũng nên phản hồi, vì...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 16:36 -
-
Trả lời cho Tiếng Anh cho người Việtbởi tuyennhanCái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .-
Channel: Tâm tình dân kỹ thuật
23-02-2025, 07:44 -
Comment