![]() |
|
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
![]() 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. |
![]() |
![]() |
![]() |
|
|