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 03-12-2006, 09:20 PM   #16
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
Code của bạn chỉ cần sửa lại thành

Code:
int8 a,b;
main()
{
a = 0;
while(a<8){
a++;
portb=00;
delay_ms(100);
portb=0xFF;
delay_ms(100);
}
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 04-12-2006, 09:15 PM   #17
anhquangngai
Đệ tử 2 túi
 
Tham gia ngày: Sep 2006
Bài gửi: 33
:
anh namqn cho em hỏi luôn cái chương trình này:
Code:
//Chuong trinh led sang don o PORTB
/*ket qua o PORTB là:00000001,00000010,00000100,00001000,00010000,00100000,01000000,10000000,10000001,10000010,10000100,10001000,.....cuoi cung thi PORTB=0xFF */
#include<16F877A.h>
#include<def_16f877a.h>
#fuses NOWDT,PUT,HS,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use fast_io(b)
int8 sck,slx,bienxoay,bienluu,giatri;
main()
   {
      trisb=0;
    while(true){
      sck=8;
      portb=0;
      delay_ms(100);
      while(sck<1)
         {
            bienxoay=0;
            slx=sck;
           while(slx<1)
               {
               bienxoay=bienxoay<<1;
               giatri=bienluu|bienxoay;
               portb=giatri;
               delay_ms(100);
               slx--;
               }
           bienluu=giatri;
           sck--;
         }
      }
   }
chương trình em viết như thế nhưng sao nó ko chạy và ban đầu em gán cho biến sck=8 thì trong dk while nó có chạy hay ko?
Cảm ơn anh trước!
Em mới học nên ko hiểu!

thay đổi nội dung bởi: namqn, 04-12-2006 lúc 11:12 PM.
anhquangngai vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-12-2006, 11:18 PM   #18
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
Có lẽ chương trình chạy đúng theo những gì bạn viết đó chứ.

Chương trình nên được sửa lại thành:

Code:
//Chuong trinh led sang don o PORTB
/*ket qua o PORTB là:00000001,00000010,00000100,00001000,00010000,00100000,01000000,10000000,10000001,10000010,10000100,10001000,.....cuoi cung thi PORTB=0xFF */
#include<16F877A.h>
#include<def_16f877a.h>
#fuses NOWDT,PUT,HS,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use fast_io(b)
int8 sck,bienxoay;
main()
   {
      trisb=0;
    while(true){
      sck=8;
      portb=0;
      delay_ms(100);
      bienxoay=1;
      while(sck>0)
         {
               portb=bienxoay;
               bienxoay=bienxoay<<1;
               delay_ms(100);
               sck--;
          }
      }
   }
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 05-02-2007, 03:13 PM   #19
phamhuydangcdt
Nhập môn đệ tử
 
Tham gia ngày: Jan 2007
Bài gửi: 7
:
counter!!!

hoi ve counter: xin chao cac ban minh co mot thac nac the nay
khi ta dem xung ngoai dung :timer0 thi xung ngoai dua vao chan A4
va ta dung lenh: setup_counters(rtcc_ext_h_to_l,rtcc_div_1);
bay gio minh muon dem xung tren c0va c1 (dung timer1)
thi khai bao the nao?
mong cac ban giup do cam on!
phamhuydangcdt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-10-2007, 06:56 PM   #20
thongtr
Đệ tử 2 túi
 
Tham gia ngày: Jul 2007
Bài gửi: 27
:
Send a message via Yahoo to thongtr
cho mình hỏi cách sửa bộ compiler với! giả sử như sửa file lcd.c!
trong file lcd.c thi compiler mặc định là dữ liệu sẽ được gởi các chân RB4-RB7! nếu em muốn dl dc đưa ra các chân của RC4-RC7 thì phải làm như thế nào?
__________________
thongtr0601@yahoo.com!!
Giúp nhau cùng tiến bộ.....
thongtr vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-12-2007, 11:50 PM   #21
Mr.Bi
Đệ tử 7 túi
 
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
:
thì bạn define lại ngõ suất ra ! thường trong thư viện đó ng ta đ/n như sau
Code:
#define D4 RB4
#define D5 RB5
#define D6 RB6
#define D7 RB7
bạn chỉnh RB.. thành RC .. thế thui !
Mr.Bi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-12-2007, 11:54 PM   #22
Mr.Bi
Đệ tử 7 túi
 
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
:
Đây là code LCD4bit , mình chỉnh lại từ code của anh Linh
Code:
#define E            PIN_D0
#define RS          PIN_D1
#define RW          PIN_D2
#define LCD_D4      PIN_D4
#define LCD_D5      PIN_D5
#define LCD_D6      PIN_D6
#define LCD_D7      PIN_D7

void LCD_Init ( void );                    // ham khoi tao LCD
void LCD_SetPosition ( unsigned int data );//Thiet lap vi tri con tro
void LCD_PutChar ( unsigned int data );    // Ham viet1kitu/1chuoi len LCD
void LCD_PutCmd ( unsigned int data ) ;    // Ham gui lenh len LCD
void send_to_LCD( unsigned int data); 

void LCD_Init ( void )
{
    delay_ms(200); // thoi gian de LCD khoi dong

    output_low(RW);        // RW = 0
    output_low(RS);        // che do gui lenh

    send_to_LCD( 0x00 );
    output_high ( E ); output_low ( E ); delay_ms ( 10 );


    send_to_LCD( 0x03 );  /* init with specific nibbles to start 4-bit mode */
    output_high ( E ); output_low ( E ); delay_ms ( 3 ); // tao xung tren chan E
    output_high ( E ); output_low ( E ); delay_ms ( 3 );
    output_high ( E ); output_low ( E ); delay_ms ( 3 );

    send_to_LCD( 0x02 );  /* set 4-bit interface */
    output_high ( E ); output_low ( E ); delay_ms ( 3 ); // tao xung tren chan E


    LCD_PutCmd ( 0x2C );    /* function set (all lines, 5x7 characters) */
    LCD_PutCmd ( 0x0C);    /* display ON, cursor off, no blink */
    LCD_PutCmd ( 0x06 );    /* entry mode set, increment & scroll left */
    LCD_PutCmd ( 0x01 );    /* clear display */
}

void LCD_SetPosition ( unsigned int data )
{

    send_to_LCD( swap ( data ) | 0x08 );
    output_high ( E ); output_low ( E ); delay_ms ( 3 ); // tao xung tren chan E

    send_to_LCD( swap ( data ) );
    output_high ( E ); output_low ( E ); delay_ms ( 3 ); // tao xung tren chan E

}

void LCD_PutChar ( unsigned int data )
{
    output_high( RS ); //RS = 1
    output_low ( RW ); //RW = 0

    send_to_LCD( swap ( data ) );                        // gui 4 bit cao
    output_high ( E ); output_low ( E ); delay_ms ( 3 ); // tao xung tren chan E

    send_to_LCD( swap ( data ) );                        //gui 4 bit thap
    output_high ( E ); output_low ( E ); delay_ms ( 3 ); // tao xung tren chan E

}

void LCD_PutCmd ( unsigned int data )
{
    output_low(RS); // RS = 0
    output_low(RW); // RW = 0

    send_to_LCD( swap(data) );    // gui 4 bit cao
    output_high (E); output_low (E); delay_ms (3);

    send_to_LCD( swap(data) );    // gui 4 bit thap
    output_high (E); output_low (E); delay_ms ( 3 );
}


void send_to_LCD( unsigned int data )
{
    output_bit ( LCD_D4, data & 0x01 );
    output_bit ( LCD_D5, data & 0x02 );
    output_bit ( LCD_D6, data & 0x04 );
    output_bit ( LCD_D7, data & 0x08 );
}
bạn thick xuất PORT nào thì cứ thế mà chỉnh lại
Mr.Bi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-12-2007, 11:24 AM   #23
anh_gioi
Đệ tử 6 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 147
:
help về Lm335+16F877A+LCD1602

lâu rùi không động chạm PIC nên quên mứt..!!!
mọi người cho em hỏi :::
Trích:
Mach do nhiet do
- MCU = PIC16F877A
- Sensor = LM335 (co the thay the bang LM35D)
- MAX232 giao tiep may tinh
- LCD1602A de hien thi gia tri nhiet do
Mo ta phan cung:
- Mach cho sensor mac nhu trong Datasheet cua LM335
Chan V_out noi qua dien tro 1K voi +5V. Chan nay cung duoc noi voi kenh AN0 cua PIC
Chan Adj noi voi dien tro 10K de tinh chinh
Chan GND noi dat
- Mach VDK gom co LCD va max232
LCD noi voi PORTD cua PIC
RS -> RD2, RW -> GND, E -> RD3
D4-D7 -> RD4-RD7
Max232:
chan10 -> RC6, chan9 -> RC7
chan8 -> chan3 DB9, chan7 -> chan2 DB9, chan5 DB9 -> GND
Kenh AN0 cua PIC noi den chan V_out LM335
Nut bam noi tai chan RB0 -> nhan ngat ngoai
Thach anh loai 20MHz, tu 22pF


#include <16F877A.h>
#include <def_877a.h>
#device *=16 adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)

#use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7, bits=9)

#include <lcd_lib_4bit.c>

int8 low,high,key,mode,min,max,mode1,i;
int1 blink,on_off,blink_min,blink_max;
int1 do_F;

void convert_bcd(int8 x);
void set_blink();
void bao_dong();
void test();
//-----------------------------------------------------------------

void main()
{
float value;
on_off =1;
min =15; //nhiet do min default
max =35; //nhiet do max default
do_F =0 ;
i = 0 ;
mode =0 ;
mode1 = 0 ;
blink=0 ;

trisa = 0xFF;
trisb = 0x01;
trisd = 0x00;

LCD_init();
Printf(LCD_putchar,"Lop DT8 - BKHN");
LCD_putcmd(0xC0);
Printf(LCD_putchar,"Khoi tao...");
// Khoi tao cho ngat ngoai
enable_interrupts (INT_EXT);
ext_int_edge(H_TO_L);
enable_interrupts (GLOBAL);
// Khoi tao che do cho bo ADC
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
delay_us(10);
// Lay mau nhiet do lan dau tien
value=(float)read_adc();
value = (value - 558.5)/2.048; // For 5V supply
// value = (value - 754.8)/2.048; // For 3.7V Supply
// value = (value - 698.2)/2.048; // For 4V supply
convert_bcd((int8)value); // Chuyen doi tach so tram, chuc, donvi de hien thi len LED 7
delay_ms(1000);
LCD_putcmd(0xC0);
Printf(LCD_putchar," Init OK");

while(1)
{
if (i==25)
{
value = read_adc();
value=(value-558.5)/2.048;

if (do_F==1) value=1.8*value+32;
convert_bcd((int8)value);
printf("\n\rNhiet do phong: %u",value);
LCD_putcmd(0xC0);
printf(LCD_putchar," T = ");
LCD_putchar(high); LCD_putchar(low);
if (do_F==0) printf(LCD_putchar," C");
else printf(LCD_putchar," F");
i=0;
}
i++;
if(((int8)value > 40) || ((int8)value < 15)) on_off=1;
else
{
on_off = 0;
LCD_Putcmd(0xCF);
LCD_putchar(" ");
blink=0;
}

if (on_off==1)
{
if (blink==0) { LCD_Putcmd(0xCF);LCD_putchar("!");blink=1;delay_ms (250);}
else {LCD_Putcmd(0xCF);LCD_putchar(" ");blink=0;delay_ms(250);}
}
}
}
//end main-----------------------------------------------------------

#INT_EXT
void test()
{
if (do_F == 1) do_F=0;
else do_F=1;

}

void set_blink()
{
switch(mode)
{
case 1: blink_min=1; break;
case 2: {blink_max=1; blink_min=0;} break;
case 3: {mode=0; blink=0; blink_min=0; blink_max=0;} break;
}
}

void convert_bcd(int8 x)
{
low=x%10; //chia lay phan du, so hang don vi
high=x/10; //tach hang tram va hang chuc
low = low + 0x30;
high = high + 0x30;
}

void bao_dong(){
int8 i;

if (blink == 0) blink = 1;
else blink=0;

for(i=0;i<50;i++)
{
LCD_Putcmd(0xCF);
if (blink==0) LCD_putchar("!");
else LCD_putchar(" ");
}
}
cho em hỏi chương trình này của anh linh ạ.nhưng sao nó cứ báo lỗi ở :
Trích:
trisa = 0xFF;
trisb = 0x01;
trisd = 0x00;
cám ơn..!
anh_gioi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-12-2007, 11:03 PM   #24
Mr.Bi
Đệ tử 7 túi
 
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
:
hình như trong 2 file bạn include vào ko có định nghĩa trisa , trisb ,trisd . bạn chỉ cần khai báo lại địa chỉ là đc thui .. ko có gì cả !
Mr.Bi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2007, 06:11 PM   #25
tiendungkct
Đệ tử 4 túi
 
Tham gia ngày: May 2007
Bài gửi: 69
:
bạn cũng có thể viết như sau:
while(1)// vong lap luôn đúng
{
for(a=0;a=8;a++)
..................
}
tiendungkct vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-01-2008, 06:41 PM   #26
thechinhcdt
Nhập môn đệ tử
 
Tham gia ngày: Oct 2006
Bài gửi: 6
:
Send a message via Yahoo to thechinhcdt
Unhappy K hiển thị LCD được.

Em mới học PIC và viết thử chương trình hiển thị LCD giống như bạn FFGmember hướng dẫn, compile no error nhưng khi mô phỏng Proteus thì k hiển thị được. Kết nối LCD chắc đúng vì em thử load file của anh FFGmember thì chạy ào ào.
Mong mọi người xem giúp, em mò hoài mà chẳng xong.

#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#include <lcd_lib_4bit.c>


void main()
{
TRISD = 0x00;
LCD_Init();
Printf(LCD_Putchar,"Test LCD");
}

Cảm ơn mọi người !
File Kèm Theo
File Type: rar thu vien kem theo.rar (2.5 KB, 377 lần tải)
thechinhcdt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-01-2008, 07:09 PM   #27
thechinhcdt
Nhập môn đệ tử
 
Tham gia ngày: Oct 2006
Bài gửi: 6
:
Send a message via Yahoo to thechinhcdt
Nhân tiện cho em hỏi một chút về CCS C, tuy có vẻ hơi ngớ ngẩn:

1. Compile và Build & Build all khác nhau chỗ nào, tại sao em mở 1 file .c bất kì, sửa rồi compile thì báo lỗi : I/O error 103. Vậy làm cách nào ?
2. Một project có Source, Output va Document để quản lý cái gì. Source gồm nhiều unit có tác dụng gì, vì thường em chỉ tạo 1 unit thôi..?
thechinhcdt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-01-2008, 08:49 PM   #28
truong407
Nhập môn đệ tử
 
Tham gia ngày: Jan 2008
Bài gửi: 1
:
em muốn tìm tài liệu mới và đầy đủ nhất về CCS bằng tiếng việt, anh nào có chỉ giúp em với. đọc phần help của nó chua hiểu kỹ vì chưa nhìu kinh nghiệm
truong407 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-01-2008, 12:35 AM   #29
thechinhcdt
Nhập môn đệ tử
 
Tham gia ngày: Oct 2006
Bài gửi: 6
:
Send a message via Yahoo to thechinhcdt
Trong topic này có 2 tutorial của anh linhnc và của anh Trần Xuân Trường (nick txt), mình nghĩ là khá đủ. bạn tìm và đọc nha !
thechinhcdt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-02-2008, 11:41 PM   #30
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Trích:
Nguyên văn bởi FFGmember View Post
Đã lâu lâu không đóng góp cho PIC Việt Nam gì rồi. Đợt này tự nhiên công việc liên quan đến PIC, yêu cầu đến việc sử dụng SPI, nhào zô luôn cho việc học CCS. Mong mỏi đóng góp chút gì đó cho tất cả mọi ngưòi.


1. Mục tiêu của việc học CCS:
• Sử dụng được CCS programmer
• Ứng dụng được chương trình hiển thị LCD
• Ứng dụng được chương trình kết nối SPI với EEPROM và MMC card. hiển thị các thông số lên LCD .


2. Nguồn tài liệu và công cụ làm việc:
• Theo tutorial của Linhnc308: http://www.picvietnam.com/forum//att...6&d=1157644591
• Chương trình CCS: down load ban CCS3.249.rar. http://www.tailieuvietnam.net/downlo...CCSC_3.249.rar
• Chương trình Proteus. 6.7
file chương trình CCS giải nén báo lỗi. Bạn nào có up lại giúp mình. Cảm ơn nhiều.
uydanh 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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
dsPIC Tutorial 3-Đọc ngõ vào và giao tiếp LCD namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 92 19-02-2017 11:15 PM
dsPIC Tutorial 2-Các kỹ thuật cơ bản namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 33 17-10-2013 11:09 PM
dsPIC Tutorial 4-Module UART và I2C namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 76 09-05-2012 10:55 AM
Tutorial LCD cua Nigel??????? spirit Cơ bản về vi điều khiển và PIC 16 16-03-2009 05:32 PM
tutorial hay cho newbie FUD84 Cơ bản về vi điều khiển và PIC 2 04-12-2005 02:29 AM


Múi giờ GMT. Hiện tại là 09:31 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