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 30-06-2008, 11:48 PM   #1
KA52
Đệ tử 1 túi
 
Tham gia ngày: Oct 2007
Bài gửi: 22
:
Question Delay = timer????

Làm sao để e thay thế delay = timer vậy??
VD:
output_a(0xff);
delay_ms(1000);
output_a(0x00);
delay_ms(1000);
e muốn thay delay = timer để sau khi xuất porta = 0xff thì làm việc khác, sau khi timer đủ 1s thì quay lại tiếp tục xuất porta = 0x00. E định xài ngắt nhưng với hơn chục delay thì ngắt sao đủ đây!!!???

cho e hỏi thêm chương trình này. cứ sau vài phút là pic của e đơ lun, ko nhận đc & truyền đc dữ liệu. Ko bít sao nữa, phải reset lại mới chạy đc. Pác nào xem giúp e lỗi ở đâu với ?? E định để khoảng 5~10 phút reset pic 1 lần nhưng cái WDT e ko bít cấu hình thời gian dài như vậy?
Trong datasheet ghi Watchdog Timer Time-out Period = 33ms với 1:1, vậy e set 1:128 cũng đc có 5s, ko bít e có hiểu sai ko nữa. (e xài 20Mhz)

Code:
#include "D:\Document\Working Files\CAN\usart\main.h"
//#include <18F4580.h>
#fuses HS,NOPROTECT,NOLVP,NOWDT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, parity=N, bits=8)

#include <can-18F4580.c>

#define data_id_a         0x201  
#define data_id_b         0x202
#define data_id_c         0x203
#define data_id_d         0x204
#define data_id_e         0x205

#define data_id_m         0x301
#define data_id_n         0x302
#define data_id_o         0x303
#define data_id_p         0x304
#define data_id_q         0x305
#define data_id_r         0x306
#define data_id_s         0x307
#define data_id_t         0x308
#define data_id_u         0x309
#define data_id_v         0x30a
///////////////////////////////////////////////////////////////////
char t;
int dem;
#byte porta  = 0xf80
#INT_RDA
void rda_isr()
{
   t=getc();   
   dem=3;
   putc(t);
}
///////////////////////////////////////////////////////////////////
void main()
{
   int mang[16]={0,1,2,3,4,5,6,7,8,9,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};
   int *pointer,led,i;
   int data1,data2,data3,data4,data5,data3a,data4a;
   int data6,data7,data8,data9;
   int data10,data11,data12,data13;
   set_tris_a(0x00);
   set_tris_d(0xff);
   pointer=&mang[0];
   can_init();
   ENABLE_INTERRUPTS(GLOBAL);
   ENABLE_INTERRUPTS(INT_RDA);
   i=16;
   while(1)
   {
      output_a(t);
      dem=0;
      
/*      if(t==0X01)
      {
         if ((can_tbe()) && (dem==1))
         {   
            led=*pointer;
            can_putd(SET_LED_ID_A,&led , 1, 1, 1, 0);       
            delay_ms(250);
            dem--;
         }
         pointer++;
         i--;      
         if(i==0)
         {
            i=16;
            pointer=&mang[0];
         }      
      }*/
///////////////////////////////////////////////////////////////////      
      if (t==0x01)               //quay thuan
      {
         if ((can_tbe()) && (dem>0))
         {
            data1=0x01;
            can_putd(data_id_a,&data1 , 1, 1, 1, 0);
            delay_ms(250);
            dem--;
         }         
      }   
      else if (t==0x02)          //quay nghich
      {
         if ((can_tbe()) && (dem>0))
         {
            data2=0x02;
            can_putd(data_id_b,&data2 , 1, 1, 1, 0);
            delay_ms(250);
            dem--;
         }
      }      
      else if (t==0x03)          //inc
      {
         if ((can_tbe()) && (dem>0)) 
         {
            data3=0x03;
            can_putd(data_id_c,&data3 , 1, 1, 1, 0);
            delay_ms(250);
            dem--;
         }
      }
      else if (t==0x04)          //dec
      {
         if ((can_tbe()) && (dem>0))
         {
            data4=0x04;
            can_putd(data_id_d,&data4 , 1, 1, 1, 0);
            delay_ms(250);
            dem--;
         }
      }
      else if (t==0x05)          //stop dong co buoc
      {
         if ((can_tbe()) && (dem>0))
         {
            data5=0x05;
            can_putd(data_id_e,&data5 , 1, 1, 1, 0);
            delay_ms(250);
            dem--;
         }
      }
///////////////////////////////////////////////////////////////////      
      else if (t==0x06)          //b1
      {
         if ((can_tbe()) && (dem>0))
         {
            data6=0x06;
            can_putd(data_id_m,&data6 , 1, 1, 1, 0);
            delay_ms(250);
            dem--;
         }
      }
      else if (t==0x07)          //b2
      {
         if ((can_tbe()) && (dem>0))
         {
            data7=0x07;
            can_putd(data_id_n,&data7 , 1, 1, 1, 0);
            delay_ms(250);
            dem--;
         }
      }
      else if (t==0x08)          //b3
      {
         if ((can_tbe()) && (dem>0))
         {
            data8=0x08;
            can_putd(data_id_o,&data8 , 1, 1, 1, 0);
            delay_ms(250);
            dem--;
         }
      }      
      else if (t==0x09)          //b4
      {
         if ((can_tbe()) && (dem>0))
         {
            data9=0x09;
            can_putd(data_id_p,&data9 , 1, 1, 1, 0);
            delay_ms(250);
            dem--;
         }
      }
      else if (t==0x0a)          //b5
      {
         if ((can_tbe()) && (dem>0))
         {
            data10=0x0a;
            can_putd(data_id_q,&data10 , 1, 1, 1, 0);
            delay_ms(250);
            dem--;
         }
      }
      else if (t==0x0b)          //b6
      {
         if ((can_tbe()) && (dem>0))
         {
            data11=0x0b;
            can_putd(data_id_r,&data11 , 1, 1, 1, 0);
            delay_ms(250);
            dem--;
         }
      }
      else if (t==0x0c)          //tu dong
      {
         if ((can_tbe()) && (dem>0))
         {
            data12=0x0c;
            can_putd(data_id_s,&data12 , 1, 1, 1, 0);
            delay_ms(250);
            dem--;
         }
      }
      else if (t==0x0d)          //stop dog nap chai
      {
         if ((can_tbe()) && (dem>0))
         {
            data13=0x0d;
            can_putd(data_id_t,&data13 , 1, 1, 1, 0);
            delay_ms(250);
            dem--;
         }
      }      
   }
}

thay đổi nội dung bởi: KA52, 01-07-2008 lúc 12:22 AM.
KA52 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫ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


Múi giờ GMT. Hiện tại là 02:10 PM.


Đượ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