HƯỚNG DẪN LẬP TRÌNH KEIL C CHO 8051-[Chỉ dành post bài hướng dẫn]
Collapse
X
-
Vay minh muon dich bit ma khong bi anh huong boi co C (OV) thi lam sao, minhhieu ? Giup minh luon nhe! Cam on nhieu!!!Nguyên văn bởi minhhieu Xem bài viếtDịch bít trong C bạn không cần phải quan tâm cờ dịch bít đâu. Làm theo câu lênh như sau:
char Data; // ví dụ khai báo một biến có tên là Data, kiểu là char
char i; // biến i là số bít cần dịch
Data = Data << i; // đây là dịch trái
Data = Data >> i; // còn đây là lệnh dịch 8 bit của Data sang phải i bit
//Ví dụ cụ thể
Data = 0b10110011;
Data = Data >> 1; // Data dịch phải 1 bit. Kết quả sau khi dịch là 0b01011001
Đến đây chắc bạn đã nắm được rồi.
Comment
-
-
các bạn cho mình hỏi chút ,mình cài chương trình keil C (uVISION3 V3.33) nhưng chạy code nào nó cũng thông báo:
----------
" Build target 'Simulator'
compiling HELLO.C...
HELLO.C(1): warning C500: SERIAL NUMBER EXPIRED
linking...
BL51 BANKED LINKER/LOCATER V6.02 - SN: K1M0C-4UI989
COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2006
"HELLO.obj"
TO "HELLO"
RAMSIZE(256)
*** FATAL ERROR L210: I/O ERROR ON INPUT FILE:
EXCEPTION 0021H: PATH OR FILE NOT FOUND
FILE: HELLO.obj
Target not created"
------------
chạy code mẫu hello cũng bị,copy code của người khác vô cũng bị
Comment
-
Nguyên văn bởi svvietnam Xem bài viếtcác bạn cho mình hỏi chút ,mình cài chương trình keil C (uVISION3 V3.33) nhưng chạy code nào nó cũng thông báo:
----------
" Build target 'Simulator'
compiling HELLO.C...
HELLO.C(1): warning C500: SERIAL NUMBER EXPIRED
linking...
BL51 BANKED LINKER/LOCATER V6.02 - SN: K1M0C-4UI989
COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2006
"HELLO.obj"
TO "HELLO"
RAMSIZE(256)
*** FATAL ERROR L210: I/O ERROR ON INPUT FILE:
EXCEPTION 0021H: PATH OR FILE NOT FOUND
FILE: HELLO.obj
Target not created"
------------
chạy code mẫu hello cũng bị,copy code của người khác vô cũng bị
SERIAL NUMBER EXPIRED : thay cdkey mới đi
FATAL ERROR L210: I/O ERROR ON INPUT FILE:
EXCEPTION 0021H: PATH OR FILE NOT FOUND[/B]
FILE: HELLO.obj
Target not created" : chưa tạo project , từ từ tạo lại project mới xem thử còn bị ko ? thứ nữa là phải click vào chỗ OUT HEX trong option for target
Comment
-
!!!
Nguyên văn bởi quannt13788 Xem bài viếtCó ai cho mình link download keil c với.Ecommerce logistics require understanding business needs, evaluating current setups, and embracing eco-friendly solutions to enhance efficiency, customer experience, and sustainable growth.
wa đây mà down nha bác!
mấy bác chịu khó nhờ bác google giúp đi! hay search trong diễn đàn cũng có ý mà!
SỰ HỌC LÀ MÃI MÃI......!!!!
Comment
-
cám ơn bạn .chắc cdkey có vấn đề rùi,mình cài lại keil c là dich được ngayNguyên văn bởi Zz_Bi_zZ Xem bài viếtSERIAL NUMBER EXPIRED : thay cdkey mới đi
FATAL ERROR L210: I/O ERROR ON INPUT FILE:
EXCEPTION 0021H: PATH OR FILE NOT FOUND[/B]
FILE: HELLO.obj
Target not created" : chưa tạo project , từ từ tạo lại project mới xem thử còn bị ko ? thứ nữa là phải click vào chỗ OUT HEX trong option for target
Comment
-
giup em

sorry
Rẹt rẹt....................xẹt xẹt......................roạt.......xong,,,,,,,,,, ,,,,xuống dòng...................Dohoanggiang
Comment
-
các bạn xem giúp mình doạn code điều khiển led 7 đoạn.
================================================== ===========*/
/*chuong trinh dieu khien 8 led 7 doan và quet 16 phim bam*/
//***********************CAC BO TIEN XU LI*********************
#include <at89X51.H>
//*************CAC BIEN TOAN CUC*************
unsigned char count_scled, //bo dem xac dinh vi tri led
buff_led1,buff_led2,buff_led3,buff_led4, //cac thanh ghi chua thong so can hien thi
buff_led5,buff_led6,buff_led7,buff_led8;
sbit anod_led1=P2^3;sbit anod_led2=P2^2; //cac chan quet led
sbit anod_led3=P2^0;sbit anod_led4=P2^1; //cac chan quet led
sbit anod_led5=P2^5;sbit anod_led6=P2^4; //cac chan quet led
sbit anod_led7=P2^6;sbit anod_led8=P2^7; //cac chan quet led
sbit key_a=P3^4;sbit key_b=P3^5; //cac chan giam sat phim bam
//********************KHAI BAO CAC HAM NGAT********************
void int_tm0(void) interrupt 1 using 0 //ngat time 0
{
TH0=0xfe; TL0=0x0b; //nap lai bo dem tm0
P2=0xff; //tat tat ca led
switch(count_scled)
{
case 0:P0=buff_led1;anod_led1=0;scan_key1();break; //mo led 1+quet phim cot 1
case 1:P0=buff_led2;anod_led2=0;break;
case 2:P0=buff_led3;anod_led3=0;break;
case 3:P0=buff_led4;anod_led4=0;break;
case 4:P0=buff_led5;anod_led5=0;break;
case 5:P0=buff_led6;anod_led6=0;break;
case 6:P0=buff_led7;anod_led7=0;break;
case 7:P0=buff_led8;anod_led8=0,count_scled=0xff;break;
}
count_scled ++; //tang gia tri thanh ghi xac dinh vi tri
}
//*****KHAI BAO CAC HAM THONG THUONG******************
void setin_tm0(void) //khoi tao cac thong so ngat
{
EA=ET0=1; //cho phep ngat tm0
TMOD=17; //che do tm 16 bit
TH0=0xfe;TL0=0x0b;TR0=1; //khoi dong tm0
}
//----------------------------------------------------------
void scan_key1(void) //ham quet phim cot 1
{
}
//***************************HAM CHINH*************************
void main(void)
{
setin_tm0(); //thiet lap thong so ban dau cho cac ngat
while(1) //vong lap vo tan cho ngat
{
}
}
//------------------------------------------------------------
trước khi chèn hàm scan_key1 vào lệnh case 0 thì mọi chuyện đều ok nhưng chỉ thêm hàm scan_key1 vào là nó báo lỗi:
//-------------------------------------------------------------
"compiling Windhv.c...
WINDHV.C(33): warning C206: 'scan_key1': missing function-prototype
WINDHV.C(53): error C231: 'scan_key1': redefinition
WINDHV.C(54): error C231: 'scan_key1': redefinition
Target not created"Last edited by svvietnam; 25-08-2008, 12:33.
Comment
-
Trong những chương trình có hàm con, bạn nên có phần khai báo hàm, như vậy sẽ dễ nhìn hơn.Phần khai báo hàm được đặt ở đầu chương trình, trình biên dịch sẽ biên dịch từ trên xuống.
Trong đoạn trương trình trên của bạn hàm scan_key1 được sử dụng trong chương trình ngắt, trong khi nó chưa được khai báo.Bạn có thể sửa bằng cách đưa hàm scan_key1 lên trên hoặc khai báo hàm đó.dientuvietnam.net
Comment
-
Dear bạn svvietnam,
lỗi này là do bạn chưa khai báo prototype cho hàm scan_key1 trc khi gọi nó ở chỗ case 0 của bạn.
Sửa rất đơn giản: bạn đưa cái
void scan_key1(void) //ham quet phim cot 1
{
}
lên trước chỗ:
void int_tm0(void) interrupt 1 using 0 //ngat time 0
{
TH0=0xfe; TL0=0x0b; //nap lai bo dem tm0
P2=0xff; //tat tat ca led
...
là ok thôi.
Khi lập trình C bạn phải nhớ 1 điều : khi bạn gọi bất cứ hàm nào, bạn phải khai báo prototype cho hàm đấy trc rồi mới gọi. (đơn giản là bạn phải đưa cái tên của hàm đấy lên trc cái chỗ bạn gọi giống như trường hợp này đấy!)
Chúc bạn thành công!
Comment
-
đúng oy , u viết hàm scan_key1() sau hàm init_tm0() , thì nó kiếm ko ra hàm scan_key1() ở đâu để thực hiện trong case0 . Cách giải quyết :Nguyên văn bởi svvietnam Xem bài viếtcác bạn xem giúp mình doạn code điều khiển led 7 đoạn.
================================================== ===========*/
/*chuong trinh dieu khien 8 led 7 doan và quet 16 phim bam*/
//***********************CAC BO TIEN XU LI*********************
#include <at89X51.H>
//*************CAC BIEN TOAN CUC*************
unsigned char count_scled, //bo dem xac dinh vi tri led
buff_led1,buff_led2,buff_led3,buff_led4, //cac thanh ghi chua thong so can hien thi
buff_led5,buff_led6,buff_led7,buff_led8;
sbit anod_led1=P2^3;sbit anod_led2=P2^2; //cac chan quet led
sbit anod_led3=P2^0;sbit anod_led4=P2^1; //cac chan quet led
sbit anod_led5=P2^5;sbit anod_led6=P2^4; //cac chan quet led
sbit anod_led7=P2^6;sbit anod_led8=P2^7; //cac chan quet led
sbit key_a=P3^4;sbit key_b=P3^5; //cac chan giam sat phim bam
//********************KHAI BAO CAC HAM NGAT********************
void int_tm0(void) interrupt 1 using 0 //ngat time 0
{
TH0=0xfe; TL0=0x0b; //nap lai bo dem tm0
P2=0xff; //tat tat ca led
switch(count_scled)
{
case 0:P0=buff_led1;anod_led1=0;scan_key1();break; //mo led 1+quet phim cot 1
case 1:P0=buff_led2;anod_led2=0;break;
case 2:P0=buff_led3;anod_led3=0;break;
case 3:P0=buff_led4;anod_led4=0;break;
case 4:P0=buff_led5;anod_led5=0;break;
case 5:P0=buff_led6;anod_led6=0;break;
case 6:P0=buff_led7;anod_led7=0;break;
case 7:P0=buff_led8;anod_led8=0,count_scled=0xff;break;
}
count_scled ++; //tang gia tri thanh ghi xac dinh vi tri
}
//*****KHAI BAO CAC HAM THONG THUONG******************
void setin_tm0(void) //khoi tao cac thong so ngat
{
EA=ET0=1; //cho phep ngat tm0
TMOD=17; //che do tm 16 bit
TH0=0xfe;TL0=0x0b;TR0=1; //khoi dong tm0
}
//----------------------------------------------------------
void scan_key1(void) //ham quet phim cot 1
{
}
//***************************HAM CHINH*************************
void main(void)
{
setin_tm0(); //thiet lap thong so ban dau cho cac ngat
while(1) //vong lap vo tan cho ngat
{
}
}
//------------------------------------------------------------
trước khi chèn hàm scan_key1 vào lệnh case 0 thì mọi chuyện đều ok nhưng chỉ thêm hàm scan_key1 vào là nó báo lỗi:
//-------------------------------------------------------------
"compiling Windhv.c...
WINDHV.C(33): warning C206: 'scan_key1': missing function-prototype
WINDHV.C(53): error C231: 'scan_key1': redefinition
WINDHV.C(54): error C231: 'scan_key1': redefinition
Target not created"
- Cách 1 : hàm nào dùng lồng các hàm # thì phải đc viết trứoc khi gọi nó
- Cách 2 : ngay sau # include<> , bạn khai báo hết tất cả các hàm mà mình dùng ra , nó giống như ta báo danh trước í . Sau đó , viết thoải mái , ko cần để í thứ tự trước sau , u hỉu í tui chứ ?
hic , replay xong mới thấy có 2 pro đã replay oy , méc công ngồi type ghê
Comment
-
cảm ơn các bạn nhiều , chuyện có thế thôi mà mình ngồi mò cả ngày hôm qua không ra,lại còn phải nhờ đến mấy đứa bạn học bên IT mà bọn nó cũng bó tay luôn!!!.sở dĩ mình phải đi hỏi mà không post bài trong này vì thấy luồng này còn ít người tham gia quá , không ngờ mọi người nhiệt tình quá.
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Tìm bạn thân quen cũ.bởi lvhnE nhớ bác Vivanpham làm bên điện tử y sinh, có lần đó cái sơ đồ máy chụp x quang sao có mấy con thryristor làm gì mà ko ai trả lới đúng cả
...
-
Channel: Tâm tình dân kỹ thuật
07-08-2026, 09:17 -
-
Trả lời cho Amply bị rò DC 22 voltbởi lvhnBác kiểm tra lại đường mạch, mối hàn xem có bị hở hoặc dẫn không tốt không?
Thay cầu diode lớn hơn càng tốt không vấn đề gì cả....-
Channel: Điện thanh
07-08-2026, 09:12 -
-
bởi LantheChào bạn.
Trục đầu ra của hộp số hành tinh xoắn ốc được kết nối với mặt bích của khách hàng thông qua một trục răng trong. Sau chưa đầy sáu tháng hoạt động, nó phát ra tiếng kêu lách cách và độ rơ lớn đáng báo động.
Việc...-
Channel: Thiết bị điện tử cá nhân
06-08-2026, 13:05 -
-
bởi ittcChào các anh em nhé, mình dự định sắp tới sẽ đi học lái xe Ôtô, thi lấy bằng lái. Cụ thể mình sẽ học và thi lấy giấy phép lái xe hạng B. Thật sự mình là người chưa có kiến thức hiểu biết gì về Ôtô cả ? tất nhiên mình sẽ phải...-
Channel: Tâm tình dân kỹ thuật
06-08-2026, 06:22 -
-
Trả lời cho Amply bị rò DC 22 voltbởi trung30000Theo sự hướng dẫn của bác, sau khi em kiểm tra tầng Vi sai sử dụng cặp c1815, tiếp đến là 1 con a1013, và cặp thúc sử dụng mje304g và mje305g, em đã tiến hành thay cặp Vi sai c1815 sau đó mở máy lên đo ngõ công suất DC 0,2V hai giây sau máy đo...-
Channel: Điện thanh
05-08-2026, 20:09 -

Comment