Nguyên văn bởi nhanh0112
Xem bài viết
Thông báo
Collapse
No announcement yet.
HƯỚNG DẪN LẬP TRÌNH KEIL C CHO 8051-[Chỉ dành post bài hướng dẫn]
Collapse
X
-
Các bac ơi giúp tui chút! Tui phải làm cái khống chế nhiệt độ rùi hiển thị trên máy tính, làm mọi thứ rùi nhưng còn đoạn giao tiếp với ADC0804 thì không chạy...Dưới đây là đoạn CODE của tui (Chắc sai roài):
...
void DOC_ADC(void) {
WRITE=0;
delay(10);
WRITE=1;
while(INT);
READ=1;
delay(10);
READ=0;
x=P2;
}
Các chân WRITE,READ,INT là các chân điều khiển, delay là hàm trễ.
Vậy thôi, mọi người giúp tôi nha.CAM ƠN!●█═██▄▄▄▄▄▄▄▄▄
▄▅██████▅▄▃▂
████████████████
◥⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲◤
Comment
-
Bạn nên xem lại quy trình làm việc với ADC nhé!Nguyên văn bởi luulinh Xem bài viếtCác bac ơi giúp tui chút! Tui phải làm cái khống chế nhiệt độ rùi hiển thị trên máy tính, làm mọi thứ rùi nhưng còn đoạn giao tiếp với ADC0804 thì không chạy...Dưới đây là đoạn CODE của tui (Chắc sai roài):
...
void DOC_ADC(void) {
WRITE=0;
delay(10);
WRITE=1;
while(INT);
READ=1;
delay(10);
READ=0;
x=P2;
}
Các chân WRITE,READ,INT là các chân điều khiển, delay là hàm trễ.
Vậy thôi, mọi người giúp tôi nha.CAM ƠN!
Đây là đoạn mã mẫu có chú thích kỹ lắm rồi đấy!
Lưu ý một chút ở đây nó không dùng nguồn tạo dao động ngoài cho ADC mà dùng 1 chân của VDK để phát xung clock cho ADC luôn, chân AD_CLK (P1.6)!
Code:; +--------------------=-=-=-=-=-=-=-=-=-=-=-----------------+ ; | Project: ADC0808 Evaluation | ; -=| Microcontroller: ATMEL AT89s8252 at 11.0592MHz v1.2 |=- ; | Programmer: Bruno Marcio Diogo Venancio | ; | Start date:01/18/2004 | ; | Email: bruno.marcio@bol.com.br 5:45am | ; | Brazil | ; +--------------------=-=-=-=-=-=-=-=-=-=-=-----------------+ ;-------| EQUATES |----------------------------------------------- ;=============| I/O |====================================== ; ====| ADC0808's Equates |========================== AD_OE BIT P1.5 ; Output enable AD_SC BIT P1.7 ; Start conversion AD_EOC BIT P1.4 ; End of conversion AD_ALE BIT P1.7 ; address lacth enable AD_CLK BIT P1.6 ; clock AD0 BIT P3.2 ; mutiplexer channel addressing AD1 BIT P3.3 AD2 BIT P3.4 CONV_PORT EQU P2 VAR1 DATA 60H VAR2 DATA 61H ORG 0 jmp MAIN MAIN: ;--INITIALIZE A/D clr AD_OE clr AD_ALE clr AD_CLK ;-- CONVERSION: clr AD0 ; Set A/D multiplexer channel0 clr AD1 clr AD2 call START_CONV ; A/D conversion routine jmp CONVERSION ;-------------------------=| SUBROUTINES |=------------------------------ ; +--------------------------------------------+ ; | ADC0808 conversion routine | ; | output: A | ; | input : multiplexer channel on ad0,ad1,ad2 | ; | PIN | ; | AD2 AD1 AD0 ANALOG INPUT | ; | 0 0 0 1 | ; | 0 0 1 2 | ; | 0 1 0 3 | ; | 0 1 1 4 | ; | 1 0 0 5 | ; | 1 0 1 6 | ; | 1 1 0 7 | ; | 1 1 1 8 | ; +--------------------------------------------+ START_CONV: mov CONV_PORT,#0FFH clr AD_OE ; hi Z output setb AD_ALE ; start converter (SET both SC and ALE) clr AD_ALE START_CLK: cpl AD_CLK jnb AD_EOC,START_CLK setb AD_OE mov P0, CONV_PORT call Delay_1s clr AD_OE ret Delay_1s: TT0: MOV R3,#8 MOV R2,#8 MOV R1,#236 TT1: DJNZ R1,TT1 DJNZ R2,TT1 DJNZ R3,TT1 RET END
Comment
-
Cám ơn bạn, có điều tui mới học VDK, thấy lập trình bằng C ngắn và dễ hơn nhiều nên không học ASM... nói chung không hiểu chương trình của bạn lắm. Mà bạn cho hỏi chút xung cấp cho ADC là khoảng 500KHz(ADC080x) mà tạo bằng chân P1.6, nếu như thạch anh là 12M thì tần số hoạt động của chip là 1 M nghĩa là cứ 2 chu kì thì phải đảo mức trên chân này --> lấy gì cho VDK hoạt động?(Người mới<-- Dốt nên hỏi)
à mà cái đoạn CODE của tui có sai không vậy?●█═██▄▄▄▄▄▄▄▄▄
▄▅██████▅▄▃▂
████████████████
◥⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲◤
Comment
-
sao không ai giúp anh_gioi thế này?Mình cũng mới học thôi nhưng theo mình lỗi này bạn phải viết hoa cái chữ P theo mình là thế!Nguyên văn bởi anh_gioixin loi!minh moi bat dau hoc 8051 lap trinh bang keil .co le cau hoi nay da nham chan voi cac cau rui ,nhung minh cung ko hieu lam ve loi nay .mọi người đã giải thích rùi nhưng mình ko hiểu cho lắm.mong mọi người giải thích lại hộ cho.
xin cảm ơn!Khó nhất trên đời làm trang nam tử
Ý chí vững vàng mà tình cảm lại mênh mang
Comment
-
Hic ! mình cũng ko hiểu câu hỏi của bạn có ý gì nữa !Nguyên văn bởi luulinh Xem bài viếtMà bạn cho hỏi chút xung cấp cho ADC là khoảng 500KHz(ADC080x) mà tạo bằng chân P1.6, nếu như thạch anh là 12M thì tần số hoạt động của chip là 1 M nghĩa là cứ 2 chu kì thì phải đảo mức trên chân này --> lấy gì cho VDK hoạt động?(Người mới<-- Dốt nên hỏi)
à mà cái đoạn CODE của tui có sai không vậy?
VĐK dùng xung ngoài từ thạch anh, việc đưa ra xung các chân thì có liên quan gì đến việc VĐK có hoạt động được hay ko đâu nhỉ !------
Qrio' qrio` qrioooooo!!!!>:D<
Comment
-
Ờ thế thì khi bạn tạo xung bằng VDK thì bạn làm thế nào? Trừ khi bạn dùng xung tần số 12M từ thạch anh....Nguyên văn bởi qrio Xem bài viếtHic ! mình cũng ko hiểu câu hỏi của bạn có ý gì nữa !
VĐK dùng xung ngoài từ thạch anh, việc đưa ra xung các chân thì có liên quan gì đến việc VĐK có hoạt động được hay ko đâu nhỉ !●█═██▄▄▄▄▄▄▄▄▄
▄▅██████▅▄▃▂
████████████████
◥⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲◤
Comment
-
cách dịch chương trình assembly ra file hex
Happy New Year ! 2007 !
Các bác ơi cho em hỏi chút: cách dịch chương trình assembly ra file hex bàng keil c như thế nào ?
có giống với cách dịch chương trìng c ra file hẽ không (chỉ khác thay đuôi *c bằng cách thay đuôi *a)
chúc mừng năm mới
Comment
-
Đúng rùi đó bạn.
Bạn làm với file .asm tượng tự như với file .c thôi. Khi save file vào bạn chọn đuôi là .asm là xong.
Chúc bạn thành công.Technical sale at WT Microelectronics S'pore
Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com
Comment
-
Mình gửi các bạn một vài file mà mình đã upload từ ngày xưa:
Keil C Appnote (32.62 MB)
Keil C Debuger (34.64 MB)
Keil C Simulate(28.72 MB)
Mình vừa update lại link. Các bạn mở link đó ra trên một cửa sổ rùi sau đó nhìn thấy chữ Download link gần cuối rùi kích vào link để download nhé.
Chúc các bạn thành công.Last edited by ngohaibac; 16-03-2007, 22:51.Technical sale at WT Microelectronics S'pore
Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com
Comment
-
. Chắc là mấy tháng trước thôi em ạ. Em vui tính quá.
Đây là bản: Keil C 8.05 (Full Version)
Và tài liệu C51 Primer
Chúc các bạn thành công.Last edited by ngohaibac; 16-03-2007, 22:53.Technical sale at WT Microelectronics S'pore
Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com
Comment
-
Bạn dùng Win98 phải không?Nguyên văn bởi phuongcn Xem bài viếtsao toi lam mai ko dc ban nhi?
kho hieu ghe tai sao ma no cu bao loi : Build target 'Target 1'
compiling thu3.c...
--- Error: can't execute 'C:\Keil\C51\BIN\C51.EXE'
Target not created
thế là sao nhỉ?!AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
Xem thêm tại Online Store ---> Click here
Mob: 0982.083.106
Comment
-
Các anh ơi giúp em với
Không hiểu sao đoạn chương trình này của em bị lỗi rất vô lý.Ngắt ngoài của em thực hiện việc đổi trạng thái chân 3 hoặc chân 1 của VDK.Nhưng khi chạy mô phỏng và thực hiện hàm bấm fím thì các chân 3 và 1 cũng bị đổi trạng thái y như là ngắt ngoài bị kích hoạt.Còn nữa,nếu em cho hàm send_string (gửi 1 chuỗi kí tự) vào hàm ngắt ngoài thì chương trình quét phím bị dừng sau khi ấn một lần duy nhất.Mong các anh xem hộ em với.Đây là code:Code:/*************************************************************************************************/ //Project Scan keyboard 4x4 //Author Duong Ngoc Lam //e_mail realtimebk@yahoo.com //Hanoi University of Technology //------------------------------------------------------------------------------------------------- // Circuit Diagram // // | | | | // ___0___|___1___|___2___|___3___|___________________ P3.0 // | | | | _________________ P3.1 // ___4___|___5___|___6___|___7___|_| _______________ P3.2 // | | | | | _____________ P3.3 // ___8___|___9___|___A___|___B___|___| | ___________ P3.4 // | | | | | | _________ P3.5 // ___C___|___D___|___E___|___F___|_____| | | _______ P3.6 // | | | |_______| | | _____ P3.7 // | | |_________________| | | // | |___________________________| | // |_____________________________________| // // //Have fun. /*************************************************************************************************/ #include <AT89x52.h> #include<stdio.h> sbit COLUMN1_PIN = P2^7;//cot 1 sbit COLUMN2_PIN = P2^6;//cot2 sbit COLUMN3_PIN = P2^5;//cot3 sbit COLUMN4_PIN = P2^4;//cot4 sbit ROW1_PIN = P2^0;//hang1 sbit ROW2_PIN = P2^1;//hang2 sbit ROW3_PIN = P2^2;//hang3 sbit ROW4_PIN = P2^3;//hang4 sbit chan0=P1^0; sbit chan1=P1^1; sbit chan2=P1^2; sbit chan3=P1^3; sbit chan4=P1^4; sbit chan5=P1^5; sbit chan6=P1^6; sbit chan7=P1^7; sbit chan8=P3^0; sbit chan9=P3^1; sbit chan10=P3^2; sbit chan11=P3^3; sbit chan12=P3^4; sbit chan13=P3^5; sbit chan14=P3^6; sbit chan15=P3^7; char m = 0; char array[3]; unsigned char KeyData=0 ; // A B C D E F unsigned char KEYCODE[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};//mang tinh gom cac phan tu co dinh //duoc cho nhu sau KEYCODE[0]=0;KEYCODE[1]=1..... //-------------------------Mo dun cua Minh-------------------------------------------------------------- int i; unsigned long so; int flag=0; void serial_init() { SCON = 0x50; TMOD = 0x21; TCON = 0; TH1 = 0xF4; TH1 = 0xF4; TR1 = 1; IE = 0x95; IT0=1; IT1=1; } //-------------------------------------------------------------------------------------------------------------- void delay_ms (long ms ) { long i,j; for (i = 1; i<=500 ; i++) for (j = 1; j<= ms ;j++); } //-------------------------------------------------------------------------------------------------------------- void send_string(unsigned char *k){ while(*k!=0x0){ SBUF=*k; while(!TI){}; TI=0; k++; } } void ngatngoai0 () interrupt 0 { chan3=~chan3;//send_string("nguyen huu thang"); } void ngatngoai1 () interrupt 2 { chan1=~chan1; } void serialint() interrupt 4 using 2 { if(RI){ array[m] = SBUF; m++; if ( m == 3 ) { if ((array[0]=='S') && (array[1]=='W') && (array[2]=='1')) {chan2=1;chan3=1;send_string("SW1");} if ((array[0]=='S') && (array[1]=='W') && (array[2]=='0')){ chan2=0;chan3=0;send_string("SW0");} if ((array[0]=='D') && (array[1]=='E') && (array[2]=='V')){send_string("RDLAB-VIDEOPHONE");} m = 0; } RI = 0; } } unsigned char ScanKeyBoard (void)//chuong trinh quet ban phim { unsigned char keytemp; //Cho tung cot bang khong, quet tung hang` //dau tien cho cot dau nhan gia tri 0.Cac cot con lai nhan gia tri 1 COLUMN1_PIN = 0; //quet dong thu nhut//cho ca cot 1 co bit =0 COLUMN2_PIN = 1; // cac cot con lai giu bit la 1 COLUMN3_PIN = 1; COLUMN4_PIN = 1; keytemp = ~(P2) & 0x0F; //P3.0 ~ P3.3 switch (keytemp)//cau lenh lua chon cho phep bit duoc phim bam nao { case 1: KeyData = KEYCODE[0];//phim 0 break; case 2: KeyData = KEYCODE[1];//phim 1 break; case 4: KeyData = KEYCODE[2];//phim 2 break; case 8: KeyData = KEYCODE[3];//phim 3 break; default : break; } // delay_ms(2); //-------------------------------------------------------------------------------------- COLUMN1_PIN = 1; COLUMN2_PIN = 0; //quet dong thu nhi COLUMN3_PIN = 1; COLUMN4_PIN = 1; keytemp = ~(P2) & 0x0F; //P3.0 ~ P3.3 switch (keytemp) { case 1: KeyData = KEYCODE[12]; break; case 2: KeyData = KEYCODE[13]; break; case 4: KeyData = KEYCODE[14]; break; case 8: KeyData = KEYCODE[15]; break; default : break; } // delay_ms(1); //-------------------------------------------------------------------------------------- COLUMN1_PIN = 1; COLUMN2_PIN = 1; COLUMN3_PIN = 0; //quet dong thu ba COLUMN4_PIN = 1; keytemp = ~(P2) & 0x0F; //P3.0 ~ P3.3 switch (keytemp) { case 1: KeyData = KEYCODE[8]; break; case 2: KeyData = KEYCODE[9]; break; case 4: KeyData = KEYCODE[10]; break; case 8: KeyData = KEYCODE[11]; break; default : break; } // delay_ms(1); //-------------------------------------------------------------------------------------- COLUMN1_PIN = 1; COLUMN2_PIN = 1; COLUMN3_PIN = 1; COLUMN4_PIN = 0; //quet dong thu tu keytemp = ~(P2) & 0x0F; //P3.0 ~ P3.3 switch (keytemp) { case 1: KeyData = KEYCODE[4]; break; case 2: KeyData = KEYCODE[5]; break; case 4: KeyData = KEYCODE[6]; break; case 8: KeyData = KEYCODE[7]; break; default : break; } // delay_ms(1); return KeyData; } //-------------------------------------------------------------------------------------------------------------- //main void main (void) { unsigned char kitu; chan4 = 0; serial_init(); //cac hang lam dau vao ROW1_PIN = 1; ROW2_PIN = 1; ROW3_PIN = 1; ROW4_PIN = 1; //display //Vong lap de lay ki tu while(1){ //for(;;) {kitu = ScanKeyBoard();if ( (kitu==1)||(kitu==2)||(kitu==3)||(kitu==4)||(kitu==13)||(kitu==14)||(kitu==15)||(kitu==16)||(kitu==9)||(kitu==10)||(kitu==11)||(kitu==12)||(kitu==5)||(kitu==6)||(kitu==7)||(kitu==8)) break;} //-------------------------Nhan tin hieu tu Vb--------------------------- kitu = ScanKeyBoard(); //----------------------quay so----------------------------------------- /***********************Cot 1********************************/ if (kitu==1) {delay_ms(3); send_string("1"); chan1=0; goto nhan; } if (kitu==2) { delay_ms(3); send_string("4"); chan1=1; goto nhan; } if( kitu==3) { delay_ms(3); send_string("8");goto nhan; } if (kitu==4) {delay_ms(3); send_string("*");goto nhan; } /*************************Cot 2*************************************/ if (kitu==13) {delay_ms(3); send_string("2");goto nhan; } if (kitu==14) {delay_ms(3); send_string("5");goto nhan; } if (kitu==15) {delay_ms(3); send_string("8");goto nhan; } if (kitu==16) {delay_ms(3); send_string("0");goto nhan; } /***************************Cot 3*************************************/ if (kitu==9) {delay_ms(3); send_string("3");goto nhan; } if (kitu==10) {delay_ms(3); send_string("6");goto nhan; } if (kitu==11) {delay_ms(3); send_string("9");goto nhan; } if (kitu==12) {delay_ms(3); send_string("#");goto nhan; } /*******************************Cot 4***********************************/ if (kitu==5) {delay_ms(3); send_string("A");goto nhan; } if (kitu==6) {delay_ms(3); send_string("B");goto nhan; } if (kitu==7) {delay_ms(3); send_string("C");goto nhan; } if (kitu==8) {delay_ms(3); send_string("D");goto nhan; } nhan:kitu=0; } }
|
Comment
Bài viết mới nhất
Collapse
-
bởi IemanjaTôi có một câu hỏi kỹ thuật muốn hỏi.
Động cơ bước vòng kín của tôi được sử dụng trong một cơ cấu dao động đảo chiều thường xuyên. Sau khi hoạt động vài ngày, vị trí điểm 0 của bộ mã hóa được thiết lập ban đầu bị trôi dần, và...-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 14:12 -
-
bởi theidiotcatGiải pháp cấu hình tối ưu chi phí và hiệu năng cho phòng net hiện đại với AMD Ryzen 7 5700G, 5700X và Radeon RX 6500XT, 7600 8GB
Giải pháp toàn diện cho bài toán đầu tư phòng net
Mô hình phòng net hiện đại ngày nay đòi hỏi...-
Channel: Đánh giá sản phẩm DTVN
Hôm qua, 13:55 -
-
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
Hôm qua, 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
Hôm qua, 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 -
-
bởi theidiotcatBộ máy đa năng toàn diện cho học tập và làm việc hàng ngày
Đối với học sinh, sinh viên và người làm việc văn phòng, việc sở hữu một bộ PC cân bằng giữa học tập, công việc và giải trí là nhu cầu vô cùng thực tế. Combo Ryzen...-
Channel: Đánh giá sản phẩm DTVN
05-08-2026, 10:28 -
-
Trả lời cho Tìm bạn thân quen cũ.bởi mèomướpDạ cháu đọc 1 số bài viết của bác vi... thì nhớ đc bác là 1 cụ già gần 80 tuổi, sức khỏe yếu. Đam mê và làm vc về kỹ thuật điện. Thích thơ ca. Có nhìu bài chia sẻ quý báu cho thế hệ sau. Tuy nhiên già rồi nên khái tính, bảo thủ, nhưng vẫn đáng kính ạ... còn lão nhathung... thì kiểu bố đời
-
Channel: Tâm tình dân kỹ thuật
31-07-2026, 12:52 -
-
bởi lvhnHãng nào tùy thích thôi bác! bây giờ các hãng đều hỗ trợ xem qua máy tính hay điện thoại đều được. Gắn Trước tiên mua về cắm nguồn set ip hết xong hãy lắp lên, cam poe chỉ cần 4 lõi là hoạt động bình thường nên 1 dây kéo cho 2 cam vẫn ok
-
Channel: Tâm tình dân kỹ thuật
30-07-2026, 15:49 -
... gay go quá.

Comment