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
-
-
-
bởi bqvietĐám UPS cửa cuốn đời cổ vẫn chạy 1 biến áp sắt từ vừa để hạ áp điện lưới nạp bình điện, vừa để kích áp bình điện thành sóng vuông đầu ra đấy thôi. Kiểu tiết kiệm này đã có từ mấy chục năm nay. Sơ đồ đại loại như link
https://www.homemade-circuits.com/si...rchargerchang/...-
Channel: Nguồn!
06-09-2026, 16:49 -

Comment