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 17-05-2014, 10:32 AM   #1
qloi
Đệ tử 3 túi
 
Tham gia ngày: Sep 2010
Bài gửi: 55
:
Help IO pic12f1822

mình mới chuyển qua htpic sài thử và gặp vấn đề này cao thủ nào rõ chỉ dùm mình gấp nhé:
Code:
#include	<htc.h>

__CONFIG(WDTE_OFF & FOSC_INTOSC & MCLRE_ON & PWRTE_OFF & BOREN_OFF & CP_OFF & IESO_OFF & FCMEN_OFF);
__CONFIG(WRT_OFF & PLLEN_OFF & LVP_OFF );

#define _XTAL_FREQ 8000000

#define BUTTON	RA2
bit	i=0;

main(void)
{
	
	OSCCON = 0x72;//internal osc 8M
	TRISA = 255;		
	TRISA1 = 0;
	i=0;
	for(;;) {
		
		while(BUTTON == 0)	
		{	RA1 = 1;
			__delay_ms(100);
		}
                 RA1 = 0;
	        __delay_ms(100);
	}
}
Vấn đề gặp phải là button đã định nghĩa là đầu vào nhưng dùng hàm như trên khi bấm giữ button thì đèn sáng ,thả ra thì tắt nhưng có vẽ là button ở đây ko thay đổi trạng thái(không đổi mức và lun = 0) nên nó chỉ chạy trong while và đèn sáng liên tục. không hiểu khai báo của mình có sai j không hay trình dịch bị lỗi hoặc không hỗ trọ nhỉ?..mình đã sữ dụng các trình dịc khác và không bị hiện tượng như vậy???
__________________
heart.touching.2010@gmail.com!

thay đổi nội dung bởi: qloi, 17-05-2014 lúc 10:38 AM.
qloi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-05-2014, 06:11 PM   #2
qloi
Đệ tử 3 túi
 
Tham gia ngày: Sep 2010
Bài gửi: 55
:
Tình hình là đã phát hiện ra chỗ sai .Do khai báo thiếu thanh ghi ANSELA và tình cờ xem cơ chế sinh mã của htpic mình phát hiện ra nó sinh mã sai các bác à. ví dụ:
Code:
while(rfin)
	{
		 __delay_us(5);
		 i++;
	}
theo trình tụ thì nó sẽ kiểm tra bít rfin nếu = 1 thì delay 5us và tăng i rồi quay lại kiểm tra bit rfin nếu =0 thì thoát .nhưng nó lại sinh code như thế này:
Code:
                        while(rfin)
   670    1A0C     BTFSS 0xc, 0x4
   671    2E7B     GOTO 0x67b
   67A    2E70     GOTO 0x670
74:                {
75:                	 __delay_us(5);
   672    3003     MOVLW 0x3
   673    00F6     MOVWF 0x76
   674    0BF6     DECFSZ 0x76, F
   675    2E74     GOTO 0x674
76:                	 i++;
   676    0020     MOVLB 0
   677    0AA4     INCF 0x24, F
   678    1903     BTFSC 0x3, 0x2
   679    0AA5     INCF 0x25, F
77:                }
78:                
79:                
   67B    0823     MOVF 0x23, W
mấu chốt là ở chổ hàm GOTO 0x67b GOTO 0x670.có vẻ như GOTO 0x670 đặt sai chổ(ở line 77 mới đúng). Mình không nghĩ một trình dịch chuyên nghiệp vậy mà bị lỗi này, các bác ai phát hiện ra lý do k.
__________________
heart.touching.2010@gmail.com!
qloi 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


Múi giờ GMT. Hiện tại là 05:38 AM.


Đượ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