PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và 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

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 26-07-2010, 10:51 AM   #1
pic_13
Đệ tử 2 túi
 
pic_13's Avatar
 
Tham gia ngày: Jun 2010
Bài gửi: 33
:
Thumbs up các pro đâu cả rồi

các pác thử xem cái code dưới của em sai cái gì mà chạy sai vậy ta.
bài này đơn giản chỉ là em dùng ngắt time2 để các led nháy đồng thời trên cả
2 cổng b và c


================================================== =====
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
int x=0,y=0,count=0;
// chuong trinh ngat
#int_timer2
void interrupts_timer2(x)
{x++;if(x==5)x=1;set_timer2(0);
switch(x)
{case 1: portb=0xaa;break;
case 2: portb=0x55;break;
case 3: portb=0xe7;break;
case 4: portb=0x18;break;
}
}
void main()
{
trisb=0x00;
trisc=0x00;
portb=0x00;
portc=0x00;
x=0;
PORT_b_PULLUPS(1);
SETUP_TIMER_2(T2_DIV_BY_16,256,16);//CHO PHEP NGAT SAU 65536US
ENABLE_INTERRUPTS(INT_TIMER2);
ENABLE_INTERRUPTS(global);
delay_us(65536);
while(true)
{portc=0xaa;delay_us(65536);
portc=0x55;delay_us(65536);
portc=0xe7;delay_us(65536);
portc=0x18;delay_us(65536);
}
}
__________________
hãy sống cho ngày mai,đừng sống cho quá khứ
pic_13 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-07-2010, 10:38 PM   #2
pic_13
Đệ tử 2 túi
 
pic_13's Avatar
 
Tham gia ngày: Jun 2010
Bài gửi: 33
:
Trích:
Nguyên văn bởi pic_13 View Post
các pác thử xem cái code dưới của em sai cái gì mà chạy sai vậy ta.
bài này đơn giản chỉ là em dùng ngắt time2 để các led nháy đồng thời trên cả
2 cổng b và c


================================================== =====
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
int x=0,y=0,count=0;
// chuong trinh ngat
#int_timer2
void interrupts_timer2(x)
{x++;if(x==5)x=1;set_timer2(0);
switch(x)
{case 1: portb=0xaa;break;
case 2: portb=0x55;break;
case 3: portb=0xe7;break;
case 4: portb=0x18;break;
}
}
void main()
{
trisb=0x00;
trisc=0x00;
portb=0x00;
portc=0x00;
x=0;
PORT_b_PULLUPS(1);
SETUP_TIMER_2(T2_DIV_BY_16,256,16);//CHO PHEP NGAT SAU 65536US
ENABLE_INTERRUPTS(INT_TIMER2);
ENABLE_INTERRUPTS(global);
delay_us(65536);
while(true)
{portc=0xaa;delay_us(65536);
portc=0x55;delay_us(65536);
portc=0xe7;delay_us(65536);
portc=0x18;delay_us(65536);
}
}
chán diễn đàn quá ,diễn đàn đông người vậy mà chả ai chịu giúp em
__________________
hãy sống cho ngày mai,đừng sống cho quá khứ
pic_13 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-07-2010, 09:36 AM   #3
nbb3i
Đệ tử 2 túi
 
Tham gia ngày: Aug 2008
Nơi Cư Ngụ: Hà Nội
Bài gửi: 45
:
Trích:
Nguyên văn bởi pic_13 View Post
chán diễn đàn quá ,diễn đàn đông người vậy mà chả ai chịu giúp em
em chán thì đi chỗ khác chơi đi
__________________
http://group3i.net
nbb3i vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-07-2010, 10:07 AM   #4
pic_13
Đệ tử 2 túi
 
pic_13's Avatar
 
Tham gia ngày: Jun 2010
Bài gửi: 33
:
Trích:
Nguyên văn bởi nbb3i View Post
em chán thì đi chỗ khác chơi đi
đây đúng là pro nè. chỉ có pro mới trả lời như vậy
__________________
hãy sống cho ngày mai,đừng sống cho quá khứ
pic_13 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-07-2010, 10:37 AM   #5
manhdktd
Đệ tử 3 túi
 
manhdktd's Avatar
 
Tham gia ngày: Jun 2010
Bài gửi: 57
:
Trích:
Nguyên văn bởi pic_13 View Post
các pác thử xem cái code dưới của em sai cái gì mà chạy sai vậy ta.
bài này đơn giản chỉ là em dùng ngắt time2 để các led nháy đồng thời trên cả
2 cổng b và c


================================================== =====
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
int x=0,y=0,count=0;
// chuong trinh ngat
#int_timer2
void interrupts_timer2(x)
{x++;if(x==5)x=1;set_timer2(0);
switch(x)
{case 1: portb=0xaa;break;
case 2: portb=0x55;break;
case 3: portb=0xe7;break;
case 4: portb=0x18;break;
}
}
void main()
{
trisb=0x00;
trisc=0x00;
portb=0x00;
portc=0x00;
x=0;
PORT_b_PULLUPS(1);
SETUP_TIMER_2(T2_DIV_BY_16,256,16);//CHO PHEP NGAT SAU 65536US
ENABLE_INTERRUPTS(INT_TIMER2);
ENABLE_INTERRUPTS(global);
delay_us(65536);
while(true)
{portc=0xaa;delay_us(65536);
portc=0x55;delay_us(65536);
portc=0xe7;delay_us(65536);
portc=0x18;delay_us(65536);
}
}
mô phỏng có hện tượng gì?
bạn thử set_timer2(0) trong hàm main xem sao?
manhdktd vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-07-2010, 05:01 PM   #6
pic_13
Đệ tử 2 túi
 
pic_13's Avatar
 
Tham gia ngày: Jun 2010
Bài gửi: 33
:
Trích:
Nguyên văn bởi manhdktd View Post
mô phỏng có hện tượng gì?
bạn thử set_timer2(0) trong hàm main xem sao?
thanks anh nhiều nha!
cho em hỏi lun anh xem cái code băm xung của em này sai chỗ nào mà không thấy
xung ra vậy anh.
====================================
#include<16f877a.h>
#fuses hs,NOWDT,PUT
#use delay(clock=20000000)
#int_timer2
void interrupts_timer2()
{set_timer2(0);
set_pwm1_duty(64);
}
main()
{
SET_TRIS_c(0);
output_c(0);
setup_timer_2(T2_DIV_BY_16,239,1);
set_timer2(0);
setup_ccp1(CCP_PWM);
while(1) {}
}
========================================
__________________
hãy sống cho ngày mai,đừng sống cho quá khứ
pic_13 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-07-2010, 10:00 AM   #7
bebungbu
Đệ tử 1 túi
 
Tham gia ngày: Jun 2009
Bài gửi: 25
:
Phần chứng của bạn có chớp led được không vậy?
Bạn muốn chương trình của mình chạy như thế nào, nói rõ cho mọi người dễ hiểu nhe.

Trích:
Nguyên văn bởi pic_13 View Post
thanks anh nhiều nha!
cho em hỏi lun anh xem cái code băm xung của em này sai chỗ nào mà không thấy
xung ra vậy anh.
====================================
#include<16f877a.h>
#fuses hs,NOWDT,PUT
#use delay(clock=20000000)
#int_timer2
void interrupts_timer2()
{set_timer2(0);
set_pwm1_duty(64);
}
main()
{
SET_TRIS_c(0);
output_c(0);
setup_timer_2(T2_DIV_BY_16,239,1);
set_timer2(0);
setup_ccp1(CCP_PWM);
while(1) {}
}
========================================
bebungbu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-07-2010, 11:53 PM   #8
pic_13
Đệ tử 2 túi
 
pic_13's Avatar
 
Tham gia ngày: Jun 2010
Bài gửi: 33
:
Trích:
Nguyên văn bởi bebungbu View Post
Phần chứng của bạn có chớp led được không vậy?
Bạn muốn chương trình của mình chạy như thế nào, nói rõ cho mọi người dễ hiểu nhe.
bài của em đơn giản chỉ là đưa xung ra chân cc1 thôi vậy mà chả có xung ra
pác xem code của em sai chỗ nào ,thì giúp em với.
__________________
hãy sống cho ngày mai,đừng sống cho quá khứ
pic_13 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-07-2010, 12:39 AM   #9
nhamdtk4
Đệ tử 3 túi
 
nhamdtk4's Avatar
 
Tham gia ngày: Feb 2009
Bài gửi: 47
:
Thử code này rồi tìm xem tại sao của bạn không chạy.
Code:
#include <16f877a.h>
#fuses xt,nowdt,nolvp
#use delay(clock=4M)

   int duty;
void main()
{
   setup_ccp1(CCP_PWM);    
   setup_ccp2(CCP_PWM);     
   setup_timer_2(T2_div_by_4,127,1);    
   
   while(true)
   {
      set_pwm1_duty(duty);
      set_pwm2_duty(255-duty);         
      duty++;
      delay_ms(50);  
   }
}
__________________
tatcachilanguybien
nhamdtk4 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-07-2010, 05:49 AM   #10
manhdktd
Đệ tử 3 túi
 
manhdktd's Avatar
 
Tham gia ngày: Jun 2010
Bài gửi: 57
:
Trích:
Nguyên văn bởi pic_13 View Post
thanks anh nhiều nha!
cho em hỏi lun anh xem cái code băm xung của em này sai chỗ nào mà không thấy
xung ra vậy anh.
====================================
#include<16f877a.h>
#fuses hs,NOWDT,PUT
#use delay(clock=20000000)
#int_timer2
void interrupts_timer2()
{set_timer2(0);
set_pwm1_duty(64);
}
main()
{
SET_TRIS_c(0);
output_c(0);
setup_timer_2(T2_DIV_BY_16,239,1);
set_timer2(0);
setup_ccp1(CCP_PWM);
while(1) {}
}
========================================
chưa cho phép ngắt toàn cục,ngắt timer2
nên không có xung ra là phải.
manhdktd vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-07-2010, 11:27 AM   #11
pic_13
Đệ tử 2 túi
 
pic_13's Avatar
 
Tham gia ngày: Jun 2010
Bài gửi: 33
:
Trích:
Nguyên văn bởi manhdktd View Post
chưa cho phép ngắt toàn cục,ngắt timer2
nên không có xung ra là phải.
pác ơi em vẫn chưa thấy xung ra .
hay tại mạch em mắc sai nhỉ
em chỉ mắc một con oscilloscope vào 2 chân cpp1 và cpp2 .sau đó nạp chíp
nhưng chả thấy xung ra
__________________
hãy sống cho ngày mai,đừng sống cho quá khứ
pic_13 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-07-2010, 12:00 PM   #12
manhdktd
Đệ tử 3 túi
 
manhdktd's Avatar
 
Tham gia ngày: Jun 2010
Bài gửi: 57
:
Bác làm mạch thật hay mô phỏng trên proteus.
nếu mô phỏng trên proteus thì 1 số bản proteus không thể mô phỏng được pwm.trước mình cũng bị tình trạng này.cái này thấy bảo là nhà sản xuất nói vầy.
down bản này về rồi đưa vào ổ cài.
File Kèm Theo
File Type: rar pic16.rar (198.2 KB, 7 lần tải)
manhdktd vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-07-2010, 03:57 PM   #13
nhamdtk4
Đệ tử 3 túi
 
nhamdtk4's Avatar
 
Tham gia ngày: Feb 2009
Bài gửi: 47
:
Nghiêm trọng nhỉ code chạy trên cả mạch thật lẫn mô phỏng rồi mà bạn làm ko chạy đc.
__________________
tatcachilanguybien
nhamdtk4 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-07-2010, 10:59 AM   #14
pic_13
Đệ tử 2 túi
 
pic_13's Avatar
 
Tham gia ngày: Jun 2010
Bài gửi: 33
:
Trích:
Nguyên văn bởi nhamdtk4 View Post
Nghiêm trọng nhỉ code chạy trên cả mạch thật lẫn mô phỏng rồi mà bạn làm ko chạy đc.
vậy ha pác .thế thì chắc chắn thằng proteu cuae em có vấn đề rồi.thanks pác.
__________________
hãy sống cho ngày mai,đừng sống cho quá khứ
pic_13 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-07-2010, 10:58 AM   #15
pic_13
Đệ tử 2 túi
 
pic_13's Avatar
 
Tham gia ngày: Jun 2010
Bài gửi: 33
:
Trích:
Nguyên văn bởi manhdktd View Post
Bác làm mạch thật hay mô phỏng trên proteus.
nếu mô phỏng trên proteus thì 1 số bản proteus không thể mô phỏng được pwm.trước mình cũng bị tình trạng này.cái này thấy bảo là nhà sản xuất nói vầy.
down bản này về rồi đưa vào ổ cài.
pác à trong ổ cài của em có cái đấy rồi.
thôi pác đang dùng bản proteu nào thi cho em vậy.
thank pác nhiếu
__________________
hãy sống cho ngày mai,đừng sống cho quá khứ
pic_13 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à 11:57 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