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 Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi nguyendinhvanTheo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
Cách đơn giản...-
Channel: Điện thanh
hôm nay, 00:04 -
-
bởi Ng.Phuong.5Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
Mấy con...-
Channel: Hướng dẫn sử dụng diễn đàn
Hôm qua, 22:44 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi mèomướpDạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
-
Channel: Điện tử công suất
Hôm qua, 19:02 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi tuyennhanChủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
-
Channel: Điện tử công suất
Hôm qua, 15:43 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi tuyennhanLoa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
-
Channel: Điện thanh
Hôm qua, 15:28 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi mèomướpDạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
-
Channel: Điện thanh
Hôm qua, 11:44 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi viettinhNó không phải cái loa rời. Chả nhẽ đèo thêm 2 con loa tép ngoài thì kỳ lắm....
-
Channel: Điện thanh
Hôm qua, 09:45 -
-
Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.bởi mèomướpDạ chú mua thêm loa tép nối tiếp qua con tụ rồi mắc vào cùng loa trung là được ạ...
-
Channel: Điện thanh
07-01-2025, 19:53 -
-
Trả lời cho Tìm datasheet linh kiện điện tử.bởi mèomướpDạ cháu hỏi bạn cháu thì bạn ấy trả lời như thế này ạ. Cháu cũng hông bít có đúng hông nữa ạ
Linh kiện điện tử với mã "943BA" và "W58BAL" là một loại cầu chì tự động (circuit breaker) do TE Connectivity sản...-
Channel: Điện tử dành cho người mới bắt đầu
07-01-2025, 19:50 -
-
bởi viettinhChuyện là mình mới đập hộp con loa kéo Sony SRS-XV900. Do khu vực mình k có sẵn hàng để trải nghiệm thực tế nên chỉ tham khảo các kênh revew online.
Mua về sử dụng thì thấy hơi buồn về chất âm, Mở max k to bằng cái loa kéo china, bass...-
Channel: Điện thanh
07-01-2025, 17:18 -
Comment