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

Ðề tài đã khoá
 
Ðiều Chỉnh Xếp Bài
Old 10-04-2007, 06:33 PM   #166
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
Trích:
Nguyên văn bởi hoanglinh23 View Post
Mình viết chương trình ngắt cho các chân từ RB4-RB7.Khi có ngắt thì đọc ADC và gửi ra portc.Nhưng không hiểu sao nó cứ đọc liên tục và gửi ra liên tục như kiểu cờ ngắt không bị xóa đi sau khi thực hiện ngắt vậy.Bạn nào rõ về ngắt chỉ dùm mình với.
Trong chương trình xử lý ngắt của bạn phải có thao tác xóa cờ ngắt sau khi đã xử lý xong. Các cờ ngắt không được PIC tự động xóa sau khi thoát khỏi chương trình xử lý ngắt.

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  
Old 13-04-2007, 03:14 PM   #167
hawinter
Đệ tử 1 túi
 
hawinter's Avatar
 
Tham gia ngày: Dec 2006
Bài gửi: 20
:
Em viết trương trinh CCS có đoạn mã sau:
#include<16f877.h>
#use delay(clock=20000000)
#device *=16 ADC=8
khi dich chương trình báo lỗi sau:
*** Error 23 "ADC877.c" Line 3(8,9): Can not change device type this far into the code
*** Error 43 "ADC877.c" Line 3(9,11): Expecting a declaration
*** Error 43 "ADC877.c" Line 3(11,13): Expecting a declaration
*** Error 48 "ADC877.c" Line 3(14,17): Expecting a (
*** Error 43 "ADC877.c" Line 3(18,19): Expecting a declaration
5 Errors, 0 Warnings.
dòng 3 lỗi là dòng :
#device *=16 ADC=8
Em dùng bản CCS v4.01 ko biết tại sao lỗi mong các sư huynh chỉ dúp ??
__________________
Học mà không yêu là phí hoài tuổi trẻ
Yêu mà không học là bán rẻ tương lai.
hawinter vẫn chưa có mặt trong diễn đàn  
Old 13-04-2007, 09:04 PM   #168
hoanglinh23
Nhập môn đệ tử
 
Tham gia ngày: Feb 2007
Bài gửi: 2
:
Thắc mắc về ngắt các chân RB4-RB7

các anh cho em hỏi tại sao khi em dùng ngắt các chân từ RB4-RB7 của pic 16f877a thì ngắt cứ xảy ra liên tục không thoát là sao với a.Em lập trình bằng CCSC.Cụ thể là chương trình ngắt các chân này em viết cứ khi nào có ngắt xảy ra thì đọc ADC và gửi ra portC.Nhưng khi em kich hoạt ngắt thử thì thấy nó cứ đọc ADC liên tục.Em cảm ơn các anh.

namqn: Bạn đã hỏi câu này ở trên, và tôi cũng đã trả lời ở trên rồi. Bạn đã xem lại những gì mình hỏi và được trả lời chưa?

thay đổi nội dung bởi: namqn, 13-04-2007 lúc 09:18 PM.
hoanglinh23 vẫn chưa có mặt trong diễn đàn  
Old 16-04-2007, 01:19 PM   #169
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Trích:
Nguyên văn bởi hawinter View Post
Em viết trương trinh CCS có đoạn mã sau:
#include<16f877.h>
#use delay(clock=20000000)
#device *=16 ADC=8
khi dich chương trình báo lỗi sau:
*** Error 23 "ADC877.c" Line 3(8,9): Can not change device type this far into the code
*** Error 43 "ADC877.c" Line 3(9,11): Expecting a declaration
*** Error 43 "ADC877.c" Line 3(11,13): Expecting a declaration
*** Error 48 "ADC877.c" Line 3(14,17): Expecting a (
*** Error 43 "ADC877.c" Line 3(18,19): Expecting a declaration
5 Errors, 0 Warnings.
dòng 3 lỗi là dòng :
#device *=16 ADC=8
Em dùng bản CCS v4.01 ko biết tại sao lỗi mong các sư huynh chỉ dúp ??
Có bạn từng gặp lỗi như bạn, xem ở đây:
http://www.picvietnam.com/forum//sho...p?t=357&page=1
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn  
Old 19-04-2007, 02:02 AM   #170
hawinter
Đệ tử 1 túi
 
hawinter's Avatar
 
Tham gia ngày: Dec 2006
Bài gửi: 20
:
Cam ơn huynh đã quan tâm em khắc được lỗi đó rồi bằng cách đưa khai báo #device *=16 ADC=8 nằm ngay dưới include...
__________________
Học mà không yêu là phí hoài tuổi trẻ
Yêu mà không học là bán rẻ tương lai.
hawinter vẫn chưa có mặt trong diễn đàn  
Old 21-04-2007, 09:13 AM   #171
tranvanthuong
Đệ tử 2 túi
 
Tham gia ngày: Mar 2007
Bài gửi: 45
:
các anh ơi giúp em nha!em caì mplab rồi nhưng khi viết chương trình theo hướng dẫn của mấy anh, em kiếm file soure của 16f877a không có(picc/device/..)chỉ có 16f54.. thoi em bây giờ làm sao ha anh!
tranvanthuong vẫn chưa có mặt trong diễn đàn  
Old 21-04-2007, 12:25 PM   #172
khangcodt
Đệ tử 2 túi
 
Tham gia ngày: Nov 2006
Bài gửi: 27
:
re

Trích:
Nguyên văn bởi tranvanthuong View Post
các anh ơi giúp em nha!em caì mplab rồi nhưng khi viết chương trình theo hướng dẫn của mấy anh, em kiếm file soure của 16f877a không có(picc/device/..)chỉ có 16f54.. thoi em bây giờ làm sao ha anh!
Phải cài CCSC rồi lấy trong device của thư mục PICC (thư mục cài ra của CCSC) thì mới có chứ!
Good luck!
khangcodt vẫn chưa có mặt trong diễn đàn  
Old 25-04-2007, 02:56 PM   #173
tranvanthuong
Đệ tử 2 túi
 
Tham gia ngày: Mar 2007
Bài gửi: 45
:
em hieu roi
tranvanthuong vẫn chưa có mặt trong diễn đàn  
Old 25-04-2007, 02:59 PM   #174
tranvanthuong
Đệ tử 2 túi
 
Tham gia ngày: Mar 2007
Bài gửi: 45
:
hi hi em cam on anh nhe!

em xai ccs khoi nhung mplab cho khoe, may anh co file def_16f877a.h cua anh Nguyen Chí Linh cho em với(linh308@yahoo.com) em đang rất cần vì em học từ các chương trình của anh ấy viết anh khangcodt có không? cho em nha! cám ơn anh trước nha
tranvanthuong vẫn chưa có mặt trong diễn đàn  
Old 25-04-2007, 03:05 PM   #175
tranvanthuong
Đệ tử 2 túi
 
Tham gia ngày: Mar 2007
Bài gửi: 45
:
lộn rồi anh linhnc308@yahoo.com mới đúng!
tranvanthuong vẫn chưa có mặt trong diễn đàn  
Old 25-04-2007, 03:08 PM   #176
tranvanthuong
Đệ tử 2 túi
 
Tham gia ngày: Mar 2007
Bài gửi: 45
:
Wink liên hệ em cho anh!!!!

Trích:
Nguyên văn bởi Trivinhu View Post
help me!ai co chuong trinh viet bang CCS ve van de dieu khien nhiet do dung 16F877A co nhieu chu thich thi gui len mang di.tui cong luc thap kem moi tu luyen duoi qua
em có đề tài đó nè! nhưng của anh linhnc308 anh cho mail cua anh di em goi cho anh!
than chao anh!
tranvanthuong vẫn chưa có mặt trong diễn đàn  
Old 25-04-2007, 04:32 PM   #177
Lattice
Nhập môn đệ tử
 
Tham gia ngày: Apr 2007
Bài gửi: 1
:
Trích:
Nguyên văn bởi ncv View Post
Chương trình gửi ký tự ra 2x16 LCD dùng CCS C

#include "16F877A.h" // PIC16F877A header file
#use delay(clock=4000000) // for 4Mhz crystal
#fuses XT, NOWDT, NOPROTECT, NOLVP // for debug mode

#define WRITE_DATA 0
#define WRITE_COMMAND 1

#define NCHAR_PER_LINE 16 // max char numbers per line
#define MS10 10 // 10 milliseconds
#define US400 400 // 400 microseconds

#define LCD_RS PIN_A1
#define LCD_RW PIN_A2
#define LCD_E PIN_A3

///////////////////////////////////////////////////////////
//
/* private */ void lcd_write(byte dat, int1 option) {
delay_us(US400);
if (option == WRITE_DATA)
output_high(LCD_RS);
else // option == WRITE_COMMAND
output_low(LCD_RS);
output_low(LCD_RW);
output_b(dat);

output_high(LCD_E);
delay_us(US400);
output_low(LCD_E);
}

///////////////////////////////////////////////////////////
//
void lcd_init(void) {
output_low(LCD_E); // Let LCD E line low

lcd_write(0x38, WRITE_COMMAND); // Set LCD 16x2, 5x7, 8bits data
delay_ms(15);
lcd_write(0x01, WRITE_COMMAND); // Clear LCD display
delay_ms(MS10);
lcd_write(0x0f, WRITE_COMMAND); // Open display & current
delay_ms(MS10);
lcd_write(0x06, WRITE_COMMAND); // Window fixed (Character Entry Mode?)
delay_ms(MS10);
}

///////////////////////////////////////////////////////////
//
void lcd_display_char(int8 line, int8 pos, char ch) {
line = (line == 0) ? 0 : 1;
pos = (pos > NCHAR_PER_LINE) ? NCHAR_PER_LINE : pos;

lcd_write(0x80 + 0x40 * line + pos, WRITE_COMMAND);
lcd_write(ch, WRITE_DATA);
}

///////////////////////////////////////////////////////////
void lcd_display_str(int8 line, char str[], int8 nchars) {
int8 i;
for (i = 0; i < nchars; i++)
lcd_display_char(line, i, str[i]);
}

///////////////////////////////////////////////////////////
/**
* Display characters to a 2x16 LCD
*
* (1) LCD1 to GND
* (2) LCD2 to VDD 5 volts
* (3) LCD4 (RS) - LCD5 (RW) - LCD6 (E) to A1, A2, A3
* (4) LCD7-LCD14 to B0-B7 (bus data)
*
* Ref: http://pic16.com/bbs/dispbbs.asp?boa...ID=5879&page=1
*/
void main(void) {
int8 i;
char LINE1[] = { "SGN Tech" };
char LINE2[] = { "Xin chao" };

lcd_init();

// use of lcd_display_char()
for (i = 0; i < 8; i++)
lcd_display_char(0, i, LINE1[i]);

// use of lcd_display_str
lcd_display_str(1, LINE2, 8);
}
Bạn có cách nào khai báo LINE1,LINE2 thành một biến không nhỉ, kiểu thế này, mình thử mà không được:
char LINE[] = { "SGN Tech" ,"Xin chao" };
for (i = 0; i < 8; i++)
lcd_display_char(0, i, LINE[i]);
for (i = 9; i < 16; i++)
lcd_display_char(1, i-8, LINE[i]);
À, bạn có bài nào trong C sử dụng kỹ thuật bảng giống bài trong MPLAB của bác Falleaf không, mình khai báo nhiều hằng kiểu char quá nên RAM tốn kinh khủng.
Lattice vẫn chưa có mặt trong diễn đàn  
Old 25-04-2007, 07:27 PM   #178
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
Trích:
Nguyên văn bởi Lattice View Post
Bạn có cách nào khai báo LINE1,LINE2 thành một biến không nhỉ, kiểu thế này, mình thử mà không được:
char LINE[] = { "SGN Tech" ,"Xin chao" };
for (i = 0; i < 8; i++)
lcd_display_char(0, i, LINE[i]);
for (i = 9; i < 16; i++)
lcd_display_char(1, i-8, LINE[i]);
À, bạn có bài nào trong C sử dụng kỹ thuật bảng giống bài trong MPLAB của bác Falleaf không, mình khai báo nhiều hằng kiểu char quá nên RAM tốn kinh khủng.
Thử thế này xem:
Code:
char LINE[] = {"SGN TechXin chao"};
Để dùng Flash thay vì dùng RAM như trên, bạn thêm từ khóa const vào khai báo:
Code:
char const LINE[] = {"SGN TechXin chao"};
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  
Old 28-04-2007, 10:40 AM   #179
anh_gioi
Đệ tử 6 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 147
:
cần hỏi

:
//************************************************** ***************************
// Author : nhh
// Date : 03/04/06
// Hardware: PIC16F877A
//************************************************** ***************************
#include <16F877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(d)
#byte portb=0x06
#byte portd=0x08
const unsigned char digital[]={0b00000110, 0b01011011, 0b01001111, 0b01100110,\
0b01101101, 0b01111101, 0b00000111, 0b01111111, 0b01101111};
// ma hoa digital duoi dang mang
// Chuong trinh ngat
#int_ext
void ngat_RB0()
{
int i;
if(i<9)
{
portd=digital[i];
++i;
}
if(i==9)
{
i=0;
}
}
// Chuong trinh chinh
main()
{
set_tris_b(0b00000001);
set_tris_d(0);
enable_interrupts(global);
enable_interrupts(int_ext);
ext_int_edge(H_to_L);
portd=0b00111111;
while(true)
{
// chi doi ngat nen vong lap nay ko co gi ca !
}
}




cho mình hỏi trong chương trình này thì :
lệnh này :
#use fast_io(b)

#use fast_io(d)

#byte portb=0x06

#byte portd=0x08
có ý nghĩa là gì vậy?
và lệnh này nữa: #int_ext
chưa hết: enable_interrupts(global);

enable_interrupts(int_ext);

ext_int_edge(H_to_L);
cám ơn nha
anh_gioi vẫn chưa có mặt trong diễn đàn  
Old 28-04-2007, 04:17 PM   #180
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Trích:
Nguyên văn bởi anh_gioi View Post
:
cho mình hỏi trong chương trình này thì :
lệnh này :
#use fast_io(b)

#use fast_io(d)

#byte portb=0x06

#byte portd=0x08
có ý nghĩa là gì vậy?
và lệnh này nữa: #int_ext
chưa hết: enable_interrupts(global);

enable_interrupts(int_ext);

ext_int_edge(H_to_L);
cám ơn nha
- #use fast_io(b): dùng cái này thì trình dịch chỉ set chân i/o với 1 lệnh duy nhất, nhớ là trong hàm main() phải dùng lệnh set_trix_x(); thì mới được.

- #byte portb=0x06: địa chỉ portb

- #int_ext: chỉ thị hàm ngắt ngoài trên chân RB0

- enable_interrupts(global);: cho phép ngắt toàn cục

- enable_interrupts(int_ext);: cho phép ngắt ngoài trên chân RB0

- ext_int_edge(H_to_L);: kiểu ngắt cạnh xung cao xuống thấp

Bạn cố gắng tìm hiểu trong help của trình biên dịch, có cả đó. Đừng hỏi những câu dạng như thế này vì sẽ không ai trả lời cho bạn đâu.
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá


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
TUT về USART trong PIC16F877A mafd_47a MPASM 16 19-02-2025 05:32 AM
TUT ve I2C ( pic16f877a ) mafd_47a MPASM 28 28-01-2025 10:45 PM
Lập nhóm PIC16F877A nhh Cơ bản về vi điều khiển và PIC 285 08-03-2017 11:08 PM
Bộ so sánh và PWM cho PIC16F877A anhquangngai Cơ bản về vi điều khiển và PIC 24 08-09-2012 09:00 AM
Pic16f877a TỪ DỄ TỚi KhÓ ntc Cơ bản về vi điều khiển và PIC 373 23-05-2009 10:24 PM


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