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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 08-06-2008, 06:09 AM   #31
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Nếu bạn muốn việc kiểm tra trạng thái chân RD0 được thực hiện liên tục thì code của bạn có thể sửa thành như sau:
Code:
#include <16F877a.h>
#include <def_877a.h>
#fuses NOWDT,PUT,XT,NOPROTECT, NOLVP
#use delay(clock=4000000)
#use fast_io(b)
main()
{
	set_tris_b(0);
	set_tris_d(255);
	output_low(PIN_B1);
	output_low(PIN_B2);
	while (1) {
		if(RD0 == 0) {
			output_high(PIN_B2);
			delay_ms(5000);
			output_low(PIN_B2);
			output_high(PIN_B1);
			delay_ms(5000);
		}
	}
}
Bạn hãy so sánh với code trước đó và suy nghĩ xem tại sao lại sửa thành như vậy.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-06-2008, 09:46 AM   #32
bean984
Đệ tử 3 túi
 
Tham gia ngày: Dec 2007
Bài gửi: 51
:
nhờ mọi người giúp đỡ giao tiếp 2 pic16f877a theo chuẩn 485.
ý tưởng của mình như sau:
con master truyền một ký tự 'a' sang cho con slave.sau đó set chân đk của con mas để nó chờ tín hiệu gửi về từ con slave.
con slave nhận đc ký tự từ master gửi đến và kiểm tra nếu đúng ký tự cần thì thực hiện gửi lại ký tự 'b'.
quá trình cứ liên tục như vậy.
bean984 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-06-2008, 09:53 AM   #33
bean984
Đệ tử 3 túi
 
Tham gia ngày: Dec 2007
Bài gửi: 51
:
mình đã thử con master chỉ liên tục truyền và con slave liên tục nhận thì không có vấn đề gì. nhưng khi thực hiện hỏi đáp như trên thì ctr không chạy đc.
đây là đoạn code:
Code:
///////////////////////////////////////////////////////////////////
//ham nhan ky tu
#INT_RDA
void RECEIVER()
{
   int k,l;
   output_high(pin_b0);
   recei[k]=fgetc(PC);
   if (recei[k]=='@')
      {
         recei[k]=null;
         if (recei[0]=='b')
            {              
               output_high(pin_e0);//set chan dk
               r232=0;//set co nhan
               delay_ms(50);
            }
         k=0;
      }
   else
      k=k+1;
}
/////////////////////////////////////////////////////////*/
void main(void)
{
   int16 i,j;
   //int1 r232;
   set_tris_a(255);
   set_tris_b(0);
   set_tris_d(0);
   set_tris_e(0);
   portb=0;
   output_high(pin_e0);
   enable_interrupts(global);
   enable_interrupts(int_RDA);
   lcd_init();
   delay_ms(1);
   lcd_clear();
   delay_ms(1);
   r232=0;
   while(1)
   {     
            if (r232==0)
               {
                  printf("aa@");
                  r232=1;
                  delay_ms(50);
                  output_low(pin_e0);
                  delay_ms(100);
               }
       
   }
}
bean984 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-06-2008, 09:57 AM   #34
bean984
Đệ tử 3 túi
 
Tham gia ngày: Dec 2007
Bài gửi: 51
:
còn đây là code con slave:
Code:
////////////////////////////////////////////////////////////*/
//ham nhan ky tu
#INT_RDA
void RECEIVER()
{
   int x,y;
   chuoi[x]=fgetc(PC);
   if (chuoi[x]=='@')
      {
         chuoi[x]=null;
         dodaichuoi=strlen(chuoi);
         if (chuoi[0]=='a')
            {
            count0=count0+1;//dem so lan nhan đc
            r232=1;//set co nhan
            }
         x=0;
      }
   else x=x+1;
}
//////////////////////////////////////////////////////////
void main(void)
{
   int luudiemcat;
   set_tris_a(255); 
   set_tris_b(255);
   set_tris_d(0);
   set_tris_e(0); 
   portb=porte=0;
   output_low(pin_E0);
   portd=0;
   r232=0;
   enable_interrupts(global);
   enable_interrupts(int_RDA);
   setup_adc(adc_clock_internal);

   while(true)
   {
      if (r232==1)
         {
               output_high(pin_e0);
               delay_ms(50);
               printf("bb@");
               delay_ms(200);
               output_low(pin_e0);
               r232=0;
               lcd_display_str(0,0,chuoi);
               lcd_display_int8(0,5,dodaichuoi);
               lcd_display_int16(0,10,count0,0);
         }
   }
}
bean984 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-06-2008, 09:58 AM   #35
bean984
Đệ tử 3 túi
 
Tham gia ngày: Dec 2007
Bài gửi: 51
:
nhờ mọi người kiểm tra giúp xem đoạn code trên có vấn đề gì không.
cảm ơn mọi người nhiều!!!
bean984 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-07-2008, 05:09 PM   #36
kinhaxac
Đệ tử 1 túi
 
Tham gia ngày: Jun 2008
Bài gửi: 18
:
các bác cho em hỏi về counter của con 16F877A :
em chưa hiểu được lệnh này

setup_COUNTERS (rtcc_state, ps_state);

rtcc_state là một trong những constant sau:

RTCC_INTERNAL // tham số này có nghĩa j ?? em tưởng nó chỉ lấy xung từ chân RA4/TOCK1
RTCC_EXT_L_TO_H //
RTCC_EXT_H_TO_L //

ps_state là một trong những constant sau:

RTCC_DIV_2 // chọn cái tỉ số chia này có nghĩa j , có fai cứ 2 xung thì nó tăng bộ đếm lên 1
RTCC_DIV_4
RTCC_DIV_8
RTCC_DIV_16
RTCC_DIV_32
RTCC_DIV_64
RTCC_DIV_128


em viết một chương trình cho timer1 mà nó ko chạy , em sửa nó từ timer0 (đã chạy)

#include <16f877a.h>
#include <def_877a.h>
#fuses NOWDT ,NOPUT ,NOPROTECT ,NODEBUG,NOBROWNOUT,NOLVP,HS
#use delay(clock=20000000)
int16 count;

#int_timer1
void interrupt_timer1()
{
set_timer1(0);
++count;
if(count==20)
{
count=0;
PORTC=~PORTC;
}
}
void main()
{
TRISC=0x00;
PORTC=0x55;
enable_interrupts(int_timer1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
enable_interrupts(global);
set_timer1(0);
// TODO: USER CODE!!
while(true){}
}

các bác cho ý kiến

thay đổi nội dung bởi: kinhaxac, 01-07-2008 lúc 05:44 PM.
kinhaxac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-07-2008, 12:39 PM   #37
picpen
Đệ tử 5 túi
 
picpen's Avatar
 
Tham gia ngày: Jun 2008
Bài gửi: 112
:
Cool Hiển thị LCD

Help Me ........ :geek:
Mình đang tìm hiểu và viết chương trình cho LCD( 2 dòng x 20 ký tự )
Nhưng mình đang gặp một khó khăn nho nhỏ cần các bạn giúp đỡ...
Mình viết chương trình để hiển thị các ký tự và chuỗi ký tự thì rất ok . Nhưng để hiển thị giá trị chứa trong một thanh nghi ,một byte nhớ hay giá trị của một biến INT lên LCD thì mình bị mắc quá ko hiển thị được. Huynh đệ nào biết giúp mình ngay nha :ugeek:
- Bài mình đang mắc như sau : hiển thị giá trị chuyển đổi ADC khi thay đổi tín hiệu đầu vào chân AN0 của pic16f877a lên LCD ( value = read_adc() , giá trị trong biến value cần hiển thị lên LCD )


**************** THANHK **************
picpen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-07-2008, 03:41 PM   #38
david
Đệ tử 4 túi
 
david's Avatar
 
Tham gia ngày: Aug 2006
Bài gửi: 81
:
bạn tách lấy số hàng đơn vị,tách lấy số hàng chục,....
cộng mỗi số với 0x30 rồi putc() lên LCD

thay đổi nội dung bởi: david, 03-07-2008 lúc 03:51 PM.
david vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-07-2008, 04:47 PM   #39
kinhaxac
Đệ tử 1 túi
 
Tham gia ngày: Jun 2008
Bài gửi: 18
:
hic khong ai trả lời mình ah`
kinhaxac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-07-2008, 01:44 AM   #40
picpen
Đệ tử 5 túi
 
picpen's Avatar
 
Tham gia ngày: Jun 2008
Bài gửi: 112
:
Cám ơn bác đã chỉ bảo ,Em đã tách được các số và cho hiển thị lên LCD...
Nhưng em chuă hiểu vì sao khi tách các số ra lại phải cộng với 0x30 ?Có phải khi cộng với 0x30 ta sẽ được mã ASII của số đó không?
Mọi người cho em hỏi đường link để dowload file : lcd_lib_4bit.c

***************** THANKS **************
picpen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-07-2008, 03:33 PM   #41
bean984
Đệ tử 3 túi
 
Tham gia ngày: Dec 2007
Bài gửi: 51
:
cho mình hỏi về cái timer0?????
mình đang gặp một lỗi khi sử dụng timer0. hiện tượng mình gặp phải là lần đầu tiên khi cắm điện vào bo thử để chạy test timer0 thì cái timer0 chạy không đúng(cụ thể là thời gian ngắt nó bị chậm rất nhiều). nhưng những lần tiếp theo đó(k ngắt nguồn điện) thì nó lại chạy đúng.và nếu cứ ngắt nguồn điện thì lại bị hiện tượng này.
ai biết nguyên nhân của lỗi này xin chỉ giúp mình với.
cảm ơn!
bean984 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-07-2008, 11:41 PM   #42
Duykiban
Nhập môn đệ tử
 
Tham gia ngày: Jun 2008
Bài gửi: 1
:
Cho mình hỏi mình dùng CCSC 3.249 viết cho Pic 16F877A mà bộ nhớ Rom chỉ khoảng 70% là trình dịch báo out of rom! tại sao thế nhỉ?
Duykiban vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-07-2008, 09:06 AM   #43
vandungevn
Đệ tử 5 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 116
:
Send a message via Yahoo to vandungevn
RTCC_INTERNAL // Chọn xung kích bên trong
T1_EXTERNAL // chọn xung kích bên ngoài theo đường TOCK
RTCC_EXT_L_TO_H // Xung kicks từ LOW -> High ( sườn "+" )
RTCC_EXT_H_TO_L // Xung kicks từ Hight -> Low ( sườn "-" )


ps_state là một trong những constant sau:

RTCC_DIV_2 // chọn cái tỉ số chia này có nghĩa j , có fai cứ 2 xung thì nó tăng bộ đếm lên 1
RTCC_DIV_4
RTCC_DIV_8
RTCC_DIV_16
RTCC_DIV_32
RTCC_DIV_64
RTCC_DIV_128

chia tần số đầu vào xung kích, đúng như bạn nói,

chúc bạn thành công
__________________
Hãy chung sức vì nền Điện Tử Viêt Nam...! Sản Phẩm thương hiệu Việt "Made in Viet Nam"
Nguyen Van Dung - Nguyễn Văn Dũng. Mobile : (+84) 97 329 1368
Nick name : VanDungEvn ( Yahoo + Skype )
Tư vấn & thiết kế điện tử + Làm mạch in + Hoàn thiện sản phẩm điện tử. Mạch nạp 89-PIC-AVR.
Email: vandungevn@gmail.com Website: www.dientuphuongdung.com
Xóm Mới - Nguyên Xá - Minh Khai - Từ Liêm - Hà Nôi - Viet Nam.
vandungevn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-07-2008, 09:17 AM   #44
vandungevn
Đệ tử 5 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 116
:
Send a message via Yahoo to vandungevn
có các thắc mắc gì các bạn vào trong nay tham khảo thêm nhé, có đủ các cách lập trình cho 16F877A http://www.picvietnam.com/forum/showthread.php?t=357.
http://www.picvietnam.com/forum/forumdisplay.php?f=12

Chúc thành công.
__________________
Hãy chung sức vì nền Điện Tử Viêt Nam...! Sản Phẩm thương hiệu Việt "Made in Viet Nam"
Nguyen Van Dung - Nguyễn Văn Dũng. Mobile : (+84) 97 329 1368
Nick name : VanDungEvn ( Yahoo + Skype )
Tư vấn & thiết kế điện tử + Làm mạch in + Hoàn thiện sản phẩm điện tử. Mạch nạp 89-PIC-AVR.
Email: vandungevn@gmail.com Website: www.dientuphuongdung.com
Xóm Mới - Nguyên Xá - Minh Khai - Từ Liêm - Hà Nôi - Viet Nam.

thay đổi nội dung bởi: vandungevn, 12-07-2008 lúc 09:23 AM.
vandungevn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-07-2008, 05:06 PM   #45
tungtuantu
Đệ tử 3 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 54
:
bác cho em xin bản mới mà lập trình dc DsPIC đó, e down vài bản rồi đều không hỗ trợ dspic, nhân tiện cho em hỏi, bác nào lập trình cái này cho dspic thì có thấy khác hơn so với pic thường ko ah, thàng này so với thằng C30 có hơn ko ah
tungtuantu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


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à 07:51 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