PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 01-01-2007, 02:07 PM   #11
LEO-XBS
Đệ tử 1 túi
 
LEO-XBS's Avatar
 
Tham gia ngày: Oct 2005
Bài gửi: 21
:
các bác xem thử một chương trình nhé. ở đây em chỉ viết các modul chương trình con thực hiện chức năng của robot còn chương trình chính thì sẽ gọi các chương trình con tùy theo mình muốn dùng chức năng nào của robot.
Code:
//**************************************************************
/////////*FILENAME: CHUONG TRINH DIEU KHIEN ROBOT*//////////////
/////////*HARDWARE: PIC16F877                    *//////////////
/////////*DATE:  19-Nov-06 09:40                 *//////////////
/////////*CCS PCM C Compiler, Version 3.227      *//////////////
/////////*NGUOI THUC HIEN: LEO-XBS               *//////////////
//**************************************************************
#include <16F877A.h>
#include <DEFS_16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
//****************************************
//////DINH NGHIA CAC CHAN VA CAC CONG/////
//****************************************
#define dc_trai1 rc1
#define dc_trai2 rb1
#define dc_phai1 rc2
#define dc_phai2 rb3
#define dc_nang1 rb4
#define dc_nang2 rb5
#define dc_day1 rb6
#define dc_day2 rb7
#define dc_kep1 rd0
#define dc_kep2 rd1
#define sw1 rc0
//*******************************************
///////KHAI BAO CAC HAM VA BIEN//////////////
//*******************************************
void setup();
void tien();
void lui();
void dung();
void dk_tien();
void sang_phai();
void sang_trai();
void quay_phai();
void quay_trai();
void dieu_khien();
int led_thu();
void nang();
void ha();
void kep();
void nha();
void day();
void thu();
void program1();
void program2();
int dem,led;
const unsigned char lech_phai[7]={0b00001000,0b00010000,0b00011000,0b00100000,0b00101000,0b00110000,0b00111000};
const unsigned char lech_trai[7]={0b00000001,0b00000010,0b00000011,0b00000100,0b00000101,0b00000110,0b00000111};
const unsigned char nhieu[50]={0b00000000,0b00001001,0b00001010,0b00001011,0b00001100,0b00001101,0b00001110,0b00010001,\
                               0b00010010,0b00010011,0b00010100,0b00010101,0b00010110,0b00011001,0b00011010,\
                               0b00011100,0b00100001,0b00100010,0b00100011,0b00100100,0b00100101,0b00100110,\
                               0b00101001,0b00101010,0b00101100,0b00110001,0b00110010,0b00110100,0b00011110,\
                               0b00111111,0b00111011,0b00111101,0b00111110,0b00111001,0b00111010,0b00111100,\
                               0b00110111,0b00101111,0b00011111,0b00100111,0b00010111,0b00001111,0b00110011,\
                               0b00110101,0b00110110,0b00101011,0b00101101,0b00101110,0b00011011,0b00011101};
//*****************************************************************************************************************
/////////////////////////////////CHUONG TRINH CHINH////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
void main()
{
 setup();
}
//*****************************************************************************************************************
///////////////////////////////////CHUONG TRINH 1//////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
void program1()
{
  while(true)
  {
     dieu_khien();
  }
}
//****************************************************************************************************************
//////////////////////////CAC CHUONG TRINH CON////////////////////////////////////////////////////////////////////
//****************************************************************************************************************
void setup()
{
 set_tris_a(0b00111111);
 set_tris_b(0b00000101);
 set_tris_c(0b11111001);
 set_tris_d(0);
 set_tris_e(0b00000111);
 portb=0;
 portd=0;
 led=0;
 dem=0;
 dc_trai1=0;
 dc_phai1=0;
 while(true){
  if(sw1==0) program1();
  }
}
//***********************************************
void dieu_khien()
{
 led=led_thu();
 switch(led)
 {
  case 0: dk_tien(); break;
  case 01: sang_phai(); break;
  case 02: sang_trai(); break;
 }
 if (re0) ++dem;
}
//*************************************************
void tien()
{
 dc_trai1=1;
 dc_trai2=0;
 dc_phai1=1;
 dc_phai2=0;
 delay_ms(500);
}
//**************************************************
void dk_tien()
{
 while(led_thu()==0)
 {
  dc_trai1=1;
  dc_trai2=0;
  dc_phai1=1;
  dc_phai2=0;
 }
}
//**************************************************
void lui()
{
 dc_trai1=0;
 dc_trai2=1;
 dc_phai1=0;
 dc_phai2=1;
 delay_ms(1000);
}
//**************************************************
void sang_phai()
{
 setup_ccp1(CCP_PWM);
 setup_ccp2(CCP_PWM);
 setup_timer_2(T2_DIV_BY_16, 127, 1);
 while(led_thu()==1)
 {
 set_pwm2_duty(1023);
 set_pwm1_duty(400);
 }
 setup_ccp1(CCP_OFF);
 setup_ccp2(CCP_OFF);
}
//**************************************************
void sang_trai()
{
 setup_ccp1(CCP_PWM);
 setup_ccp2(CCP_PWM);
 setup_timer_2(T2_DIV_BY_16, 127, 1);
 while(led_thu()==2)
 {
 set_pwm2_duty(400);
 set_pwm1_duty(1023);
 }
 setup_ccp1(CCP_OFF);
 setup_ccp2(CCP_OFF);
}
//**************************************************
void quay_phai()
{
 while(ra1>0){
 dc_trai1=1;
 dc_trai2=0;
 dc_phai1=0;
 dc_phai2=1;
 }
}
//**************************************************
void quay_trai()
{
 while(ra4>0){
 dc_trai1=0;
 dc_trai2=1;
 dc_phai1=1;
 dc_phai2=0;
 }
}
//**************************************************
void dung()
{
 dc_trai1=1;
 dc_trai2=1;
 dc_phai1=1;
 dc_phai2=1;
 delay_ms(1000);
}
//**************************************************
void nang()
{
 dc_nang1=1;
 dc_nang2=0;
 delay_ms(1000);
}
//**************************************************
void ha()
{
 dc_nang1=0;
 dc_nang2=1;
 delay_ms(1000);
}
//**************************************************
void day()
{
 dc_day1=1;
 dc_day2=0;
 delay_ms(1000);
}
//*************************************************
void thu()
{
 dc_day1=0;
 dc_day2=1;
 delay_ms(1000);
}
//*************************************************
void kep()
{
 dc_kep1=1;
 dc_kep2=0;
 delay_ms(1000);
}
//*************************************************
void nha()
{
 dc_kep1=0;
 dc_kep2=1;
 delay_ms(1000);
}
//*************************************************
int led_thu()
{
 int i;
 for (i=0;i<7;i++)
 {
     if (porta==lech_trai[i]) return(1);
     else if (porta==lech_phai[i]) return(2);
 }
 for (i=0;i<50;i++)
 {
     if(porta==nhieu[i]) return(0);
 }
}
namqn: bạn nhớ dùng các tag [ code] và [ /code] để bọc các đoạn mã nguồn, như vậy sẽ dễ đọc hơn (nhớ là các tag không có khoảng trắng nhé).
__________________
=============================
________ Leo XBS _________
E-mail:leo_xbs1408@yahoo.com
"Đi một ngày đàng học một sàng khôn"

thay đổi nội dung bởi: namqn, 01-01-2007 lúc 09:40 PM.
LEO-XBS vẫn chưa có mặt trong diễn đàn  
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
TUT ve I2C ( pic16f877a ) mafd_47a MPASM 26 07-05-2024 08:55 AM
TUT về USART trong PIC16F877A mafd_47a MPASM 11 04-05-2024 04:43 AM
Lập nhóm PIC16F877A nhh Cơ bản về vi điều khiển và PIC 285 08-03-2017 11:08 PM
Bộ so sánh và PWM cho PIC16F877A anhquangngai Cơ bản về vi điều khiển và PIC 24 08-09-2012 09:00 AM
Pic16f877a TỪ DỄ TỚi KhÓ ntc Cơ bản về vi điều khiển và PIC 373 23-05-2009 10:24 PM


Múi giờ GMT. Hiện tại là 07:16 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam