e cám ơn anh kidteam và tất cả các anh nhé. mấy hôm mải mê vs cái mạch nên e ko ol được.
Thông báo
Collapse
No announcement yet.
các bác xem giúp e code này sai chỗ nào mà nó ko chạy với
Collapse
X
-
e cũng nghĩ cái khai báo này ko sai. vid e đã 1 lần nào đọc trong tài liệu thấy người ta khai báo như vậy.! hình như là tài liêu của bác Nguyễn Bá Thuận -ĐH Lạc HồngNguyên văn bởi dtcn_112 Xem bài viếtmình có một mạch đếm từ 0000 đến 9999 chạy trên mô phỏng có khai báo là:TMOD=0x01;TH0=0xC350;TL0=0xC350;mạch chỉ đếm tăng không đếm giảm được.vì các bác trên diễn đàn nói khai báo như vậy là sai nên không dám gửi lên nếu bạn thấy cần thì liên lạc với mình qua mail:lamdtk72@gmail.com.mình cảm thấy bài bạn gửi lên ban đầu chỉ sửa một chút là chạy nhưng mình bận quá có gì mình xem lại sau.Nguyễn Huy Biên - 01649 802 694
gmail :
Comment
-
e thấy phần quét led của anh khó hiểu quá.@ @.! e đọmafaf ko hiểu gì hết. dù sao cũng rất cám ơn bác.@ @
Nguyên văn bởi kidteam Xem bài viếtbạn ấy hỏi cách làm đồng hồ đếm 1/10 hay 1/100 giây gì đó
sau đó hiển thị ra 4 con led 7 đoạn
có 2 nút
1 nút chạy và dừng đồng hồ
1 nút xóa giờ về 0000
bạn xem code thế này ok chưa hay sai gì nhé
Code:#include <regx51.h> #define uchar unsigned char #define uint unsigned int #define LedData P1 #define Pled1 P2_0 #define Pled2 P2_1 #define Pled3 P2_2 #define Pled4 P2_3 void T0_ISR();//phuc vu viec dem thoi gian void EX0_ISR();//phuc vu viec start stop thoi gian void EX1_ISR();//phuc vu viec xoa ve 0000 void init(void);//chuong trinh con khoi tao //================================================== uchar bRun; uchar bCountT0;//dem so lan ngat t0 cu 10 lan thi tang 1 cho num uchar num1,num2,num3,num4; uchar maled[10]={0x88,0xeb,0x4c,0x49,0x2b,0x19,0x18,0xcb,0x8,0x9}; //================================================== void main(void) { init(); while(1); } //================================================== void init(void) { //khoi tao ngat ngoai theo suon EA=1; EX0=1;//ngat ngoai 0 IT0=1;//ngat theo suon ET0=1; EX1=1; IT1=1; TMOD=1; TL0=0xf0;//55.536 TH0=0xd8;//tuc la cu 10.000 thi xay ra tran bCountT0=0; //num=0; TR0=1;//cho phep bo dinh thoi hoat dong //ET1=1; } //================================================== void T0_ISR(void) interrupt 1 { //chuong trinh ngat phuc vu viec dem thoi gian //khoang nho nhat la 0.1 s 100ms TR0=0; TL0=0xf0; TH0=0xd8; Pled2=Pled3=Pled4=0; Pled1=1; LedData=maled[num1]; Pled1=Pled3=Pled4=0; Pled2=1; LedData=maled[num2]; Pled2=Pled1=Pled4=0; Pled3=1; LedData=maled[num3]; Pled2=Pled3=Pled1=0; Pled4=1; LedData=maled[num4]; if(!bRun) { TR0=1; return; } ++bCountT0; if(bCountT0==10) { bCountT0=0; ++num4; if(num4==10) { num4=0; ++num3; } if(num3==10) { num3=0; ++num2; } if(num2==10) { num2=0; ++num1; } if(num1==10) num1=0; } //ok sau nay se hien thi len led 7 doan TR0=1; } //================================================== //================================================== void EX0_ISR(void) interrupt 0 { if(bRun) bRun=0; else bRun=1; } void EX1_ISR(void) interrupt 2 { num1=num2=num3=num4=0; }Nguyễn Huy Biên - 01649 802 694
gmail :
Comment
-
tất nhiênNguyên văn bởi mast090 Xem bài viếtquét led = ngắt timer kiểu này k cần thiết phải delay, ngày xưa mình cũng thắc mắc nhưng có 1 điều cơ bản mà đôi lúc ko để ý đó là thời gian chờ tới vòng ngắt timer tiếp theo chính là thời gian delay ^^
góp ý cái là chuơng trình ngắt nó có thể chạy mà k cần khai báo tên hàm trước main. bình thường trong C nếu chuơng trình con viết dưới main thì muốn sử dụng trong main thì cần khai báo tiêu đề của nó ở trên kiểu
void chuơng trình con(....)//tiêu đề
void main
void chươn trình con(...)//nội dung chuơng trình
còn nếu viết luôn nội dung chương trình trước main thì k cần khai báo tiêu đề các ctc trong code
còn với các chuơng trình ngắt k cần khai báo tiêu đề như code trên đưa
tùy phong cách viết code của mỗi người thôi
tại quen bên lập trình C/C++ nên cứ dùng thế thôi
đoạn quét led ở trên sai mà
Comment
-
quét led lại:
Code:#include <regx51.h> #define uchar unsigned char #define uint unsigned int #define LedData P1 #define Pled1 P2_0 #define Pled2 P2_1 #define Pled3 P2_2 #define Pled4 P2_3 void T0_ISR();//phuc vu viec dem thoi gian void EX0_ISR();//phuc vu viec start stop thoi gian void EX1_ISR();//phuc vu viec xoa ve 0000 void init(void);//chuong trinh con khoi tao //================================================== uchar bRun; uchar bCountT0;//dem so lan ngat t0 cu 10 lan thi tang 1 cho num uchar num1,num2,num3,num4; uchar maled[10]={0x88,0xeb,0x4c,0x49,0x2b,0x19,0x18,0xcb,0x8,0x9}; uchar bCntLed; //================================================== void main(void) { init(); while(1); } //================================================== void init(void) { //khoi tao ngat ngoai theo suon EA=1; EX0=1;//ngat ngoai 0 IT0=1;//ngat theo suon ET0=1; EX1=1; IT1=1; TMOD=1; TL0=0xf0;//55.536 TH0=0xd8;//tuc la cu 10.000 thi xay ra tran bCountT0=0; //num=0; TR0=1;//cho phep bo dinh thoi hoat dong //ET1=1; bCntLed=0; } //================================================== void T0_ISR(void) interrupt 1 { //chuong trinh ngat phuc vu viec dem thoi gian //khoang nho nhat la 0.1 s 100ms TR0=0; TL0=0xf0; TH0=0xd8; ++bCntLed; //if(bCntLed==) Pled2=Pled3=Pled4=0; if(bCntLed==1) { Pled1=1; LedData=maled[num1]; } if(bCntLed==2) { Pled2=1; LedData=maled[num2]; } if(bCntLed==3) { Pled3=1; LedData=maled[num3]; } if(bCntLed==4) { Pled4=1; LedData=maled[num4]; } if(bCntLed==4) bCntLed=0; if(!bRun) { TR0=1; return; } ++bCountT0; if(bCountT0==10) { bCountT0=0; ++num4; if(num4==10) { num4=0; ++num3; } if(num3==10) { num3=0; ++num2; } if(num2==10) { num2=0; ++num1; } if(num1==10) num1=0; } //ok sau nay se hien thi len led 7 doan TR0=1; } //================================================== //================================================== void EX0_ISR(void) interrupt 0 { if(bRun) bRun=0; else bRun=1; } void EX1_ISR(void) interrupt 2 { num1=num2=num3=num4=0; }
Comment
-
a có thể giải thích giúp e về phần quét led của a ko ạ, e thấy cách viết của a rất hay, nhưng cond băn khoăn phần quét đó, mong bác giúp đỡNguyên văn bởi kidteam Xem bài viếtquét led lại:
Code:#include <regx51.h> #define uchar unsigned char #define uint unsigned int #define LedData P1 #define Pled1 P2_0 #define Pled2 P2_1 #define Pled3 P2_2 #define Pled4 P2_3 void T0_ISR();//phuc vu viec dem thoi gian void EX0_ISR();//phuc vu viec start stop thoi gian void EX1_ISR();//phuc vu viec xoa ve 0000 void init(void);//chuong trinh con khoi tao //================================================== uchar bRun; uchar bCountT0;//dem so lan ngat t0 cu 10 lan thi tang 1 cho num uchar num1,num2,num3,num4; uchar maled[10]={0x88,0xeb,0x4c,0x49,0x2b,0x19,0x18,0xcb,0x8,0x9}; uchar bCntLed; //================================================== void main(void) { init(); while(1); } //================================================== void init(void) { //khoi tao ngat ngoai theo suon EA=1; EX0=1;//ngat ngoai 0 IT0=1;//ngat theo suon ET0=1; EX1=1; IT1=1; TMOD=1; TL0=0xf0;//55.536 TH0=0xd8;//tuc la cu 10.000 thi xay ra tran bCountT0=0; //num=0; TR0=1;//cho phep bo dinh thoi hoat dong //ET1=1; bCntLed=0; } //================================================== void T0_ISR(void) interrupt 1 { //chuong trinh ngat phuc vu viec dem thoi gian //khoang nho nhat la 0.1 s 100ms TR0=0; TL0=0xf0; TH0=0xd8; ++bCntLed; //if(bCntLed==) Pled2=Pled3=Pled4=0; if(bCntLed==1) { Pled1=1; LedData=maled[num1]; } if(bCntLed==2) { Pled2=1; LedData=maled[num2]; } if(bCntLed==3) { Pled3=1; LedData=maled[num3]; } if(bCntLed==4) { Pled4=1; LedData=maled[num4]; } if(bCntLed==4) bCntLed=0; if(!bRun) { TR0=1; return; } ++bCountT0; if(bCountT0==10) { bCountT0=0; ++num4; if(num4==10) { num4=0; ++num3; } if(num3==10) { num3=0; ++num2; } if(num2==10) { num2=0; ++num1; } if(num1==10) num1=0; } //ok sau nay se hien thi len led 7 doan TR0=1; } //================================================== //================================================== void EX0_ISR(void) interrupt 0 { if(bRun) bRun=0; else bRun=1; } void EX1_ISR(void) interrupt 2 { num1=num2=num3=num4=0; }Nguyễn Huy Biên - 01649 802 694
gmail :
Comment
-
Build target 'Target 1'
linking...
BL51 BANKED LINKER/LOCATER V6.02 - SN: Eval Version
COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2006
"pho.obj"
TO "pho"
RAMSIZE(256)
************************************************** ****************************
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 081DH BYTE (101%) *
************************************************** ****************************
Program Size: data=60.0 xdata=0 code=2221
LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S)
*** FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED
MODULE: D:\PHO\5X5X5\C51\LIB\C51S.LIB (-----)
LIMIT: 0800H BYTES
Target not created
mình đang tập lập trinh keilc cho led cube 5x5x5 nhưng nó báo lỗi này thì sao zay
pro nào biết giúp mình với
Comment
-
vượt quá 8kb bộ nhớ của chíp, code bạn viết lớn hơn khả năng của nó, xóa bớt vài hiệu ứng đi là nhẹCode:RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 081DH BYTE (101%) *
Website chính thức đổi địa chỉ website thành
Mời các bạn ghé thăm !!!
Comment
-
em thấy thay chip có ROM lớn hơn cũng có thể khác phục được lỗi này,bác mast090 có sành lập trình đa nhiệm cho vi điều khiển không cho em xin ít tài liệu em mới học cái này chẳng biết phải bắt đầu từ đâu mà em chỉ lập trình với hệ điều hành kernel thôi vì đây là yêu cầu của thầy giáo em không có yahoo của bác nên không biết liên lạc với bác thế nào.
Comment
-
thì cũng có gì đâuNguyên văn bởi bienhou Xem bài viếta có thể giải thích giúp e về phần quét led của a ko ạ, e thấy cách viết của a rất hay, nhưng cond băn khoăn phần quét đó, mong bác giúp đỡ
bạn chú ý trong hàm ngắt T0_ISR
mỗi khi được gọi thì biến bCntLed được tăng lên 1
nếu nó =1 thì cho led 1 sáng và tắt các led còn lại
nếu nó bằng 2,3,4 thì tương tự
vì mỗi khi T0_ISR được gọi thì bCntLed lại tăng lên 1 và quay vòng nên các led tuần tự sáng, tắt
-> quét led
Comment
-
phân tích code ta thấy, thời gian ngắt là 10mS, thời gian tích cực của mỗi led chỉ khoảng vài uS, cho là BJT có khả năng dẫn nhanh đi thì duty cycle của mỗi LED cũng chỉ khoảng 0. mấy % ấy, thì làm sao sáng đc.Nguyên văn bởi mast090 Xem bài viếtquét led = ngắt timer kiểu này k cần thiết phải delay, ngày xưa mình cũng thắc mắc nhưng có 1 điều cơ bản mà đôi lúc ko để ý đó là thời gian chờ tới vòng ngắt timer tiếp theo chính là thời gian delay ^^
góp ý cái là chuơng trình ngắt nó có thể chạy mà k cần khai báo tên hàm trước main. bình thường trong C nếu chuơng trình con viết dưới main thì muốn sử dụng trong main thì cần khai báo tiêu đề của nó ở trên kiểu
void chuơng trình con(....)//tiêu đề
void main
void chươn trình con(...)//nội dung chuơng trình
còn nếu viết luôn nội dung chương trình trước main thì k cần khai báo tiêu đề các ctc trong code
còn với các chuơng trình ngắt k cần khai báo tiêu đề như code trên đưa
Comment
-
e có chung suy nghĩ như anh chung đó. timer ngắn quá, ko đủ để led sángNguyên văn bởi chung1608 Xem bài viếtphân tích code ta thấy, thời gian ngắt là 10mS, thời gian tích cực của mỗi led chỉ khoảng vài uS, cho là BJT có khả năng dẫn nhanh đi thì duty cycle của mỗi LED cũng chỉ khoảng 0. mấy % ấy, thì làm sao sáng đc.Nguyễn Huy Biên - 01649 802 694
gmail :
Comment
-
ok huynh, e hiểu rồi.! tks bácNguyên văn bởi kidteam Xem bài viếtthì cũng có gì đâu
bạn chú ý trong hàm ngắt T0_ISR
mỗi khi được gọi thì biến bCntLed được tăng lên 1
nếu nó =1 thì cho led 1 sáng và tắt các led còn lại
nếu nó bằng 2,3,4 thì tương tự
vì mỗi khi T0_ISR được gọi thì bCntLed lại tăng lên 1 và quay vòng nên các led tuần tự sáng, tắt
-> quét ledNguyễn Huy Biên - 01649 802 694
gmail :
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 vào youtube nghe thử xem sao?: https://www.youtube.com/watch?v=NczPIwWWNWE...
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 11:19 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phamSuno hát sai toàn bộ nốt nhạc và điệu valse cháu ạ . Khi chép lới nó toàn bộ hát như thế, viết vào style không sửa nốt nhạc và lời khi chưa cho phép thì nó không hát hiện thông báo chưa được cho phép hát.
-
Channel: Tâm tình dân kỹ thuật
29-04-2026, 20:35 -
-
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 vi van phamĐây là sheet nhạc và video bản nhạc tôi viết tán bà xã 50 năm trước, nay viết lại.
-
Channel: Tâm tình dân kỹ thuật
26-04-2026, 19:54 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van pham
...-
Channel: Tâm tình dân kỹ thuật
26-04-2026, 19:49 -
-
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 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phamSuno là phần mềm dành cho người không biết nhạc lý, chỉ cần viết lời là nó tự biên tự diễn.Khi cháu sáng tác 1 bản nhạc với chủ âm, phụ âm điệu nhạc cháu gởi lên SUNO nó chỉ chơi đúng vài dòng đầu của nhạc, nhiều người dạy...
-
Channel: Tâm tình dân kỹ thuật
22-04-2026, 13:45 -
-
bởi dinhthuong92Vậy là Mạch PPT không cần dùng tới cuộn cảm luôn nhỉ!...
-
Channel: Nguồn!
22-04-2026, 11:19 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Hiện nó còn chưa phân biệt được giọng nam giọng nữ trong song ca nữa. Hát mono một giọng thì ok.
Ở bài MỎI CÁNH CHIM BẰNG nó hát lệch: khúc bi ca, từng ngày, mịt mù, địa chỉ, cát bụi, mỏi mòn, hoàng hôn, nơi ấy, dại khờ.-
Channel: Tâm tình dân kỹ thuật
22-04-2026, 11:07 -
-
Trả lời cho Công nghệ TSMC cho thiết kế Digital ICbởi gfasdfa234ai còn cái này không nhỉ , upload lại cho mọi người đi , vì một cộng đồng điện tử việt nam...
-
Channel: Công nghệ ASIC & Advance Techno
22-04-2026, 11:06 -

Comment