![]() |
|
Tài trợ cho PIC Vietnam |
||||||||
| Thực hành Bắt đầu làm một robot như thế nào? Mẹo vặt? Kỹ thuật? Công nghệ?... Hãy bắt tay vào việc... |
![]() |
|
|
Ðiều Chỉnh | Xếp Bài |
|
|
#1 |
|
Nhập môn đệ tử
Tham gia ngày: Sep 2007
Bài gửi: 1
: |
Các bác xem giúp em chương trình này, ko biết bị lỗi gì mà chương trình chỉ xuất ra v=5 liên tục ( mục tiêu của em là tăng v lên 1 đơn vị sau mỗi 10ms = ngắt của timer1) . thx nhieu
Code:
#include <16F877a.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6, rcv=PIN_C7)
#include <def_877a.h>
#include <math.h>
#include <ctype.h>
#include <stdlib.h>
char data;
int a;
int16 xung,v;
#INT_TIMER1
void timer1_isr()
{
v=v+1;
set_timer1(59286);
}
void main()
{ setup_timer_1 ( T1_DIV_BY_8);
ENABLE_INTERRUPTS(INT_TIMER1);
ENABLE_INTERRUPTS(GLOBAL);
set_timer1(59286);
x=5;
while(1)
{
delay_ms(100);
printf("%x",v);
}
}
thay đổi nội dung bởi: namqn, 08-08-2008 lúc 11:09 PM. |
|
|
|
|
|
#2 |
|
Trưởng lão PIC bang
|
Chương trình của bạn gán cho x = 5, thay vì gán giá trị đầu là 5 cho v. Biến v của bạn vẫn được tăng lên sau mỗi ngắt timer, nhưng lệnh printf không in ra v, mà có lẽ in ra chuỗi "%x", với x là biến được khởi tạo bằng 5. Tôi không rõ hành vi của lệnh printf trong CCS C như thế nào khi nó được truyền các tham số kiểu này (tôi không dùng CCS C).
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 |
|
|
|
|
|
#3 | |
|
Super Moderator
Tham gia ngày: Feb 2006
Bài gửi: 150
: |
Trích:
Có lẽ bạn post chương trình chưa đầy đủ vì có vài biến khai báo chẳng để làm gì, vài biến thì phải làm nhưng lại không khai báo, nếu đúng y chang như chương trình này thì kết quả của bạn ra luôn là 5 là hoàn toàn vô lý vì "chưa dịch được"
__________________
Đ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 thay đổi nội dung bởi: phamminhtuan, 09-08-2008 lúc 12:40 AM. |
|
|
|
|
|
|
#4 | |
|
Đệ tử 1 túi
Tham gia ngày: May 2008
Bài gửi: 18
: |
Trích:
|
|
|
|
|
|
|
#5 |
|
Đệ tử 2 túi
|
Sau ngắt phải xóa cờ tràn TMR1IF=0;
Bạn lekhoa nhầm ở biến x như các bác đã nói.
__________________
Best Regard. |
|
|
|
|
|
#6 |
|
Đệ tử 3 túi
Tham gia ngày: Jul 2008
Bài gửi: 58
: |
hành vi của lệnh
rintf("%x",v);bạn muốn làm gì với lện này?? nếu hiện thị lên LCD hay led 7 vạch thì lệnh này không hiện kết quả như bạn nói được. |
|
|
|
![]() |
|
|