Social Icons

Thứ Hai, 7 tháng 10, 2013

PIC sử dụng 2 cổng COM UART và SUART

                                                                     SOURCE

********************************
File Name:       UART.c
Dependencies:    None
Processor:       PIC16F/PIC18F
Compiler:        CCS C
Company:         vinasemiconductor
********************************

Chuong trinh co huong dan co ban ve truyen thong trong PIC,    
Truyen nhan mot ky tu, mot chuoi va mot so integer len 2 cong COM
 Ta co the su dung dong thoi bo UART cung va SUART (UART mem)    

#include <16F877A.h>
//#device adc=8
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES RESERVED                 //Used to set the reserved FUSE bits
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_A2,rcv=PIN_A3,stream=COM1,errors)   // COM1 su dung USART ( UART mem)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,stream=COM2,errors)  // COM2 su dung UART (UART cung)
void main()
{
int x=10,y=20;
char kytu_1,kytu_2;
char string[30],s[30];
fprintf(COM1,"COM1: Vinasemiconductor\n\r"); // truyen mot chuoi len cong COM1
delay_ms(100);
fprintf(COM2,"COM2: Vinasemiconductor\n\r"); // truyen mot chuoi len cong COM2
delay_ms(100);
fputc('A',COM1);                             // truyen mot ky tu len cong COM1
fprintf(COM1,"\n\r");                        // xuong dong
delay_ms(100);
fputc('B',COM2);                             // truyen mot ky tu len cong COM2
fprintf(COM2,"\n\r");                        // xuong dong
delay_ms(100);
fprintf(COM1,"%u\n\r",x);                    // truyen mot so integer len COM1
delay_ms(100);
fprintf(COM2,"%u\n\r",y);                    // truyen mot so integer len COM2
delay_ms(100);
while(1)
{

fgets(string,COM1);                          // nhan mot chuoi tu COM1
fprintf(COM1,"string=%s\n\r",string);        // truyen len COM1 chuoi vua nhan

kytu_1 = fgetc(COM1);                        // nhan mot ky tu tu COM1
if(kytu_1=='1')                              // neu ky tu la '1' thi truyen len COM1 ky tu do
{
fputc(kytu_1,COM1);
}

fgets(string,COM2);                          // nhan mot chuoi tu COM2
fprintf(COM2,"string=%s\n\r",string);        // truyen len COM2 chuoi vua nhan

kytu_2 = fgetc(COM2);                        // nhan mot ky tu tu COM2
if(kytu_2=='2')
{
fputc(kytu_2,COM2);                          // truyen len COM2 chuoi vua nhan
}
//delay_ms(500);
//value2 = fgetc(PC2);
//if (value1=='a')
//fprintf(PC1,"%u\n\r",x);
}
}

                                                   KẾT QUẢ MÔ PHỎNG
Mô tả: các bạn có thể sử dụng đồng thồi UART và SUART để truyền dữ liệu, tùy theo ứng dụng

Chúc các bạn thành công!

Thanks and Best Regards 

Nguyễn Ngọc Qui
Automation Engineer
Email: quinguyentgvn@gmail.com
Phone: 0938 430 305

Chủ Nhật, 6 tháng 10, 2013

PIC đọc ADC

                                                                    SOURCE

***************************
File Name:       ADC.c
Dependencies:    None
Processor:       PIC16F/PIC18F
Compiler:        CCS C
Company:         vinasemiconductor                      
***************************

#include <16F877A.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES RESERVED                 //Used to set the reserved FUSE bits
#use delay(clock=20000000)
int8 x;
void main()
{
setup_adc_ports( ALL_ANALOG );// All pins analog
setup_adc(ADC_CLOCK_INTERNAL );
set_adc_channel( 0 );// chon kenh su dung analog, o day chon kenh 0 (tuc chan AN0 trong datasheet)
while(1)
{
x = read_adc();// gia tri doc ADC
output_b(x);// xuat ra port B, cac chan cua port B tuong ung voi gia tri nhi phan cua gia tri doc ADC ve
}
}

                                   KẾT QUẢ MÔ PHỎNG



Mô tả: PIC đọc ADC sau đó xuất giá trị ra PORTB
Chúc các bạn thành công!

Thanks and Best Regards 

Nguyễn Ngọc Qui
Automation Engineer
Email: quinguyentgvn@gmail.com
Phone: 0938 430 305

Bài Viết 3

kwflkmeflml

Bài viết thứ 2

Bài viết thứ 2

bài viết đầu tiên

bài viết đầu tiên
 

Sample text

Sample Text

Sample Text