[ บทความ : Robot ] ตอนที่ 9 เรื่อง ... ไลบรารีสำหรับ ET-ROBOT RD2 |
พอดีมีคนถามถึงแฟ้มส่วนหัว (header file) สำหรับ ET-ROBOT RD2 ซึ่งมีด้วยกัน 3 แฟ้ม คือ |
||
1. rd2reg.h เป็นแฟ้มส่วนหัวที่สร้างขึ้นมาเพื่อกำหนดรายการเรจิสเตอร์สำหรับชิพ RD2 | ||
/*------------------------------------------------------ * Philips P89C51RD2 register (RD2REG.H) *------------------------------------------------------*/ asm { CCAP0H EQU $FA * Module 0 Capture High CCAP1H EQU $FB * Module 1 Capture High CCAP2H EQU $FC * Module 2 Capture High CCAP3H EQU $FD * Module 3 Capture High CCAP4H EQU $FE * Module 4 Capture High CCAP0L EQU $EA * Module 0 Capture Low CCAP1L EQU $EB * Module 1 Capture Low CCAP2L EQU $EC * Module 2 Capture Low CCAP3L EQU $ED * Module 3 Capture Low CCAP4L EQU $EE * Module 4 Capture Low CCAPM0 EQU $DA * Module 0 Mode CCAPM1 EQU $DB * Module 1 Mode CCAPM2 EQU $DC * Module 2 Mode CCAPM3 EQU $DD * Module 3 Mode CCAPM4 EQU $DE * Module 4 Mode CCON EQU $D8 * PCA Counter Control CH EQU $F9 * PCA Counter High CL EQU $E9 * PCA Counter Low CMOD EQU $D9 * PCA Counter Mode } extern register unsigned char PSW, SP, DPH, DPL, P0, P1, P2, P3, IP, IE, TMOD, TCON, TH0, TL0, TH1, TL1, SCON, SBUF, PCON, T2CON, TH2, TL2, RCAP2H, RCAP2L, CCAPM0, CCAPM1, CCAPM2, CCAPM3, CCAPM4, CCAP0H, CCAP1H, CCAP2H, CCAP3H, CCAP4H, CCAP0L, CCAP1L, CCAP2L, CCAP3L, CCAP4L, CCON, CH, CL, CMOD; |
||
2. lcd.h เป็นแฟ้มส่วนหัวที่ใช้สำหรับควบคุม LCD บนบอร์ด RD2 ที่ใช้ควบคุมหุ่นยนต์ ET-ROBOT | ||
/* Filename : lcd.h * I/O : Reset -> P2.5 * Enable -> P2.4 * Data4567 -> P2.0,P2.1,P2.2,P2.3 */ /*************************************************** * Prototype(s) * ***************************************************/ LCD_busy(); LCD_enable(); LCD_inst(command); LCD_putc(ascii); LCD_puts(lcd_string); LCD_init(); LCD_row1(); LCD_row2(); /*************************************************** * Sources * ***************************************************/ LCD_busy( ) { unsigned char i; for (i=0; i<0x18; i++); } LCD_enable( ) { asm { clr P2.4 } LCD_busy(); asm { setb P2.4 } } LCD_inst(command) unsigned char command; /* Wrote an instruction on the LCD. */ { asm { clr P2.5 } P2 = (P2 & 0xF0)|((command>>4) & 0x0F); LCD_enable(); P2 = (P2 & 0xF0)|(command & 0x0F); LCD_enable(); LCD_busy( ); } LCD_putc(ascii) unsigned char ascii; { asm { setb P2.5 } P2 = (P2 & 0xF0)|((ascii>>4) & 0x0F); LCD_enable(); P2 = (P2 & 0xF0)|(ascii & 0x0F); LCD_enable(); LCD_busy( ); } LCD_puts(lcd_string) unsigned char *lcd_string; { while (*lcd_string) LCD_putc(*lcd_string++); } LCD_init( ) { asm { setb P2.4 clr P2.5 } LCD_inst(0x33); LCD_inst(0x32); LCD_inst(0x28); LCD_inst(0x0C); LCD_inst(0x06); LCD_inst(0x01); /* Clear */ LCD_busy(); } LCD_row1() { LCD_inst(0x80); } LCD_row2() { LCD_inst(0xC0); } |
||
3. motor.h เป็นแฟ้มส่วนหัวที่ใช้สำหรับควบคุมการทำงานของเซอโวมอเตอร์ของ ET-ROBOT | ||
/* Filename : motor.h * I/O : P1.4 -> Left (PWM-CEX1) * P1.5 -> Right (PWM-CEX2) */ MTL_back() asm { MOV CCAP1H,#243 } MTL_forward() asm { MOV CCAP1H,#230 } MTL_stop() asm { MOV CCAP1H,#0 } MTR_back() asm { MOV CCAP2H,#230 } MTR_forward() asm { MOV CCAP2H,#243 } MTR_stop() asm { MOV CCAP2H,#0 } MTX_init() { /* Initial Timer0 Generate Overflow PCA */ TMOD = 0x02; /* Timer0 Mode2 : 8bit auto reload */ TH0 = 16; /* 256-240, 78.125usec Auto reload (20msec/PWM) */ TL0 = TH0; TCON = 0x10; /* setb TR0, TCON or 0001,0000*/ /* Initial PWM */ CMOD=0x04; CCAPM1=0x42; CCAPM2=0x42; CCAP1H=0x00; CCAP2H=0x00; CCON=0x40; } |
ดาวน์โหลด ET-ROBOT-RD2.EXE ขนาด 51.7KB |
หมายเหตุ |
แฟ้ม et-robot-rd2.exe เป็นแฟ้มที่ถูกบีบอัดโดยบันทึกเป็น .exe การคลายแฟ้มนั้นทำได้โดยการดับเบิ้ลคลิกที่แฟ้ม et-robot-rd2.exe เพื่อกำหนดไดเรกทอรีที่จะคลายแฟ้ม ถ้าทำสำเร็จจะได้แฟ้ม 3 แฟ้ม ดังรายชื่อที่บอกไปก่อนหน้านี้ครับ ส่วนรายละเอียดการทำงานนั้นอ่านได้จากหนังสือ Micro-C/51 (พิมพ์ครั้งที่ 3) ของทาง ETT ครับ |