PDA

View Full Version : HT PIC9.60 dịch quá chuối ?????


datk45d
20-12-2008, 12:51 AM
Mình dùng HT PIC9.60 PRO, vừa mới activate cho 45 ngày. Viết một chương trình cho 16f886, tuy nhiên sau khi biên dịch thấy chuối như sau: Nếu dùng lệnh T2CON=0x7e thì sẽ tiết kiệm được 38 word so với dùng lệnh: T2CON=(1<<TMR2ON)|(15<<TOUTPS0)|(1<<T2CKPS1); Không hiểu bản thân HT PIC chuối như vậy hay do là bản trial mà chuối như vậy. Viết cho avr bằng avrstudio đâu có mấy vụ ngớ ngẩn này nhỉ. Bác nào biết nguyên nhân xin chỉ giáo với.

namqn
20-12-2008, 02:22 AM
Mình dùng HT PIC9.60 PRO, vừa mới activate cho 45 ngày. Viết một chương trình cho 16f886, tuy nhiên sau khi biên dịch thấy chuối như sau: Nếu dùng lệnh T2CON=0x7e thì sẽ tiết kiệm được 38 word so với dùng lệnh: T2CON=(1<<TMR2ON)|(15<<TOUTPS0)|(1<<T2CKPS1); Không hiểu bản thân HT PIC chuối như vậy hay do là bản trial mà chuối như vậy. Viết cho avr bằng avrstudio đâu có mấy vụ ngớ ngẩn này nhỉ. Bác nào biết nguyên nhân xin chỉ giáo với.
T2CON là thanh ghi 8-bit, bạn viết biểu thức đó làm cho vế phải được tính toán bằng số 16-bit, rồi mới lấy 8 bit thấp nhất của kết quả gán cho T2CON. Tất nhiên phải có sự khác nhau.

Thân,

datk45d
20-12-2008, 01:56 PM
Không, nhưng tất cả đều là hằng số được định nghĩa sẵn. Đáng ra HT phải tính ra giá trị thực rồi đưa vào biểu thức chứ. Như thế mới thuận tiện cho người viết chương trình. Bên avrstudio em thấy nó vẫn làm như thế mà.

namqn
20-12-2008, 04:41 PM
Không, nhưng tất cả đều là hằng số được định nghĩa sẵn. Đáng ra HT phải tính ra giá trị thực rồi đưa vào biểu thức chứ. Như thế mới thuận tiện cho người viết chương trình. Bên avrstudio em thấy nó vẫn làm như thế mà.
Cách viết của bạn sẽ thích hợp nếu TMR2ON, TOUTPS0, và T2CKPS1 là các hằng số chỉ vị trí bit tương đối trong một byte (tức là có tầm trị nằm giữa 0 và 7). Tuy nhiên, các hằng số trên được định nghĩa trong HT PIC bằng địa chỉ tuyệt đối như sau:
bit TMR2ON @ ((unsigned)&T2CON*8)+2;
bit TOUTPS0 @ ((unsigned)&T2CON*8)+3;
bit T2CKPS1 @ ((unsigned)&T2CON*8)+1;


Bạn đang áp đặt cách dùng của một trình biên dịch khác lên HT PIC mà không kiểm tra xem nó có thích hợp không. Bài viết của tôi ở post #2 cũng không chính xác, vì tôi đã không xem kỹ biểu thức của bạn.

Thân,

datk45d
20-12-2008, 10:51 PM
Có lẽ em cứ nghĩ mặc nhiên như vậy nên tưởng HT cũng thế. Vậy trong HT có cách nào viết dạng gợi nhớ như vậy mà không tốn flash không hả bác, không nhẽ lại đi định nghĩa lại tất cả các loại tên bit, tên thanh ghi,...