![]() |
|
Tài trợ cho PIC Vietnam |
dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#21 | |
Đệ tử 2 túi
Tham gia ngày: Jun 2005
Bài gửi: 27
: |
Em thắc mắc bởi vì trong vd 2_1 có dòng :
"Hai dòng lệnh 26 và 27 đặt ngưỡng tràn tương ứng với 0,5 giây ở tần số thực thi lệnh là 5 MHz (tức là chip có clock bằng 20 MHz)." rồi xuống cuối ví dụ a có dòng : "điều chỉnh ngưỡng tràn để LED sẽ nhấp nháy đúng 1 Hz (với mã hiện tại thì LED sẽ nhấp nháy ở 1,6 Hz, vì tần số thực thi lệnh của chip sẽ là 8 MHz với bộ dao động nội 8 MHz và PLLx4 được kích hoạt) " Sau khi đọc câu trả lời của a thì em đã hiểu ý nghĩa của dòng cuối này ,chứ trước đó em ko hiểu tại sao cùng set PLL4 mà sao trên thì 5MHz ,dưới thì 8 Mhz .Nhưng em đọc trong cái dsPIC Manual thì thấy FRC là 7,37 Mhz ,vậy PLLx4 = 29.48Mhz ,PLLx8 = 58.96 Mhz ,PLLx16 = 117.92 Mhz ,vậy đâu dùng 8Mhz được ,và giá trị nhỏ nhất của bộ dao động nội là 29.48Mhz ??? mà sao người ta để lẻ thế nhỉ ??? Ah ,anh giải thích thêm dùm em về cách khai báo biến : ở vd 2-3 : _ .bss cho đoạn chứa các dữ liệu không khởi tạo giá trị (.data cho đoạn chứa các dữ liệu khởi tạo giá trị <<< là hằng số ??? ) _ .align 2 << ??? _ count: .space 2 << khai bao biến count 16bit ở vd 2-4 : _ .section Table,psv, address(0x0200) <<< khai báo bảng Table có địa chỉ 0x0200 ,vậy psv ở đây nghĩa là jì ???Trong cái tag Output em chẳng thấy cái psv này đâu cả : Trích:
vậy dòng : _ mov #psvpage(Table),W0 <<< xác định địa chỉ trang chứa Table vào W0 ??? _ mov W0, PSVPAG <<< ghi cái địa chỉ này vào thanh ghi PSVPAG _ mov #psvoffset(Table),W1 <<< ghi vị trí các số hạng vào W1 ??? _ mov W1, W2 <<< lấy vị trí đầu bảng ,em coi watch thì thấy vị trí này là 0x8200 ??? _ add W1,#(1082), W3 <<< lấy vị trí cuối bảng ,10*2 = 10 giá trị 2byte ??? em koi watch thì vị trí này là 0x8214 ???? 10 giá trị mà sao lại 0x8214 ?? _ #psvpage với #psvoffset em kiếm trong datasheet với cái 70157C mà ko thấy nói .Cái này do định nghĩa sẵn trong chip ah ??? Típ nữa ^_^ : dòng: _ mov [W1++], W0 <<< [] là lấy giá trị thứ W1 ,ghi vào W0 sau đó tăng giá trị W1 ??? ,em koi watch thì sau dòng lệnh này W1 từ 0x8200 -> 0x8202 (tăng 2 giá trị) ,W0 thì gán giá trị đầu tiên của Table .Sau đó W1 từ 0x8202 ->0x8204 (tăng 2 giá trị) ,W0 thì đc gán giá trị thứ 2 ,vậy ++ ở đây là tăng 2 giá trị àh ??? em mới học nên hem bit nhìu @_@ ,a giúp em hen ^_^ ,thanks a thay đổi nội dung bởi: chukhivuitinh, 28-04-2008 lúc 01:59 AM. |
|
![]() |
![]() |
Tags |
assembly language, led, stack |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
Học CCS thông qua Tutorial PICVIETNAM | FFGmember | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 105 | 08-09-2017 04:12 PM |
dsPIC Tutorial 3-Đọc ngõ vào và giao tiếp LCD | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 92 | 19-02-2017 11:15 PM |
dsPIC Tutorial 5-Module ADC và MCPWM | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 83 | 12-09-2013 10:33 PM |
dsPIC Tutorial 1-Tạo và biên dịch một project (ASM30) | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 16 | 22-08-2012 12:35 AM |
dsPIC Tutorial 4-Module UART và I2C | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 76 | 09-05-2012 10:55 AM |