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
-
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
-
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
-
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
-
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
-
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
-
Trả lời cho Hỏi về bơm màng bldcbởi vi van phamPhải xem cơ cấu bơm, chứ xem cơ cấu rotor, thì chỉ làm thầy bói xem voi.
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 08:19 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11vg, cám ơn bác...........
-
Channel: Thiết bị điện tử cá nhân
28-11-2024, 14:37 -
-
bởi khoine9899
Em chào các anh và mọi người.
Hiện em đang có 1 con bơm màng trong thiết bị y tế đang gặp tình trạng yếu dần hoặc ngừng hoạt động sau thời gian sử dụng
Sau khi tìm hiểu về thông tin của bơm trên mạng thì em được biết...-
Channel: Điện tử dành cho người mới bắt đầu
28-11-2024, 11:22 -
-
Trả lời cho Cần mọi người giúp mạch tạo sóng siêu âm máy rửabởi bqviet
-
Channel: Điện tử công suất
27-11-2024, 20:26 -
-
bởi Minhdai95Em chào mọi người, e đang sửa mạch tạo sóng siêu âm cho máy rửa mà chưa có tài liệu để tham khảo sửa, mọi người cho e xin tài liệu ạ...
-
Channel: Điện tử công suất
27-11-2024, 11:37 -
-
bởi pia2k1Cùng câu hỏi và cần được giải đáp thêm ạ...
-
Channel: Hướng dẫn sử dụng diễn đàn
27-11-2024, 11:28 -
-
Trả lời cho Công thức điện tửbởi mèomướpDạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
-
Channel: Tâm tình dân kỹ thuật
26-11-2024, 21:21 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
-
Channel: Thiết bị điện tử cá nhân
26-11-2024, 20:31 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11Ok , thanks bác đã chỉ...
-
Channel: Thiết bị điện tử cá nhân
26-11-2024, 15:06 -
-
bởi nguyendinhvanSau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !
Chập thì thay. Cháy thì tháo
Làm thì láo. Báo thì hay
May thì khoe. Rủi thì bỏ
Thành tích nhỏ. Báo thành to
Làm cho có. Báo chi li
Sai cả li. Báo...-
Channel: Tâm tình dân kỹ thuật
26-11-2024, 00:35 -
Comment