I) Tổ chức bộ nhớ: Có 2 bộ nhớ là bộ nhớ chương trình và bộ nhớ dữ liệu
Bộ nhớ chương trình:
-Là bộ nhớ Flash dung lượng 8K word(1word=14 bit) => số lệnh nó quản lý tối đa là
8*1024=8192 lệnh(dùng 14 bit để mã hóa một lệnh)
-Để quản lý 8K word =>cần số bit địa chỉ là 13bit(2 mũ 13 =8192)=> địa chỉ đầu là 0000h
và địa chỉ cuối là 1FFFh.Bộ nhớ chương trình được chia làm 4 page=> mỗi page có dung
lương 2K.=>địa chỉ cuối của một page (giả sử địa chỉ đàu là 0000h)
là:0000h+7FF=07FFh(07FF=2*1024-1)
-Bộ đếm chương trình của Píc dùng 13 bit(PC 0->12).Khi reset thi bộ đếm chương trình
chỉ đến địa chỉ 0000h.Khi ngắt xảy ra thì bộ đếm chỉ đến địa chỉ 0004h
Bộ nhớ dữ liệu:
Chia là 4 bank.Mỗi bank có dung lượng là 128 bytes(từ 0h->7Fh).Thanh ghi SFR thì nằm
ở địa chỉ thấp của bank.Còn GFR thì nằm ở địa chỉ còn lại của bank.
II)Thanh ghi
Có 2 loại thanh ghi là :thanh ghi với mục đích chung và thanh ghi có chức năng đặc
biệt
Thanh ghi có chức năng đặc biệt :
Phân chia làm 2 loại là thanh ghi liên quan đến CPU và thanh ghi dùng để thiết lập và điều
khiển các thiết bị ngoại vi.
-Thanh ghi STATUS(03h,83h,103h,183h) chứa các kết quả các phép toán của khối
ALU(giống thanh ghi AX của 8086) và trạng thái Reset và các bit chọn bank cần truy xuất
trong bộ nhớ dữ liệu
IRP:bit lựa chọn bank trong chế độ địa chỉ trực tiếp(1 bank 2,3 ; 0 bank 0,1)
RP1 và RP0 dùng để chọn bank trong chế độ gián tiếp(00 bank 0; 01 bank 1; 10 bank
2; 11 bank 3)
TO bit Time-out
Bằng 1 khi bật nguồn hoặc sử dụng lệnh CLRWDT hoặc SLEEP
Bằng 0 khi wdt xảy ra
PD bit Power down
Bằng 1 khi bật nguồn hoặc CLRWDT
Bằng 0 khi thực hiện lệnh SLEEP
chương trình PC sẽ được cất vào Stack và được trả lại khi gọi lệnh RETURN (Giống 8086)
III) Vấn đề về các chân xuất nhập
Trong Pic có 5 Port xuất nhập là PortA,B,C,D,E
Các Port này được điều khiển bằng thanh ghi TRIS.Nếu là Port A thì thanh ghi đó là
TRISA…
Thanh ghi TRISA có 7 bit gồm khi set bit nò đó lên 1 thì bit mà nối với chân đó sẽ là
input và ngược lại.Ví dụ để cấu hình cho 5 chân của PortA từ chân 0 đến chân 4 ta làm như
sau:
BSF 03h,5;Chọn bank 1
MOVLW 06h ;Cho 00110 vào w-đây là thanh ghi rất đa năng
MOVWF 85h; cho TRISA 00110->chân 4,3,0 là output còn chân 1,2 là input
……………….
IV) Vấn đề về Timer
Vấn đề về timer ta cần nghiên cứu những vấn đề sau:
-Có mấy loại Timer?
-Thanh ghi nào điều khiển Timer nào-các bit trong thanh ghi nói lên điều gì?
-Có thể giải thích được sơ đồ về mỗi loại Timer trong Datasheet?
…..
Giải quyết vấn đề?
-Có 3 loại Timer là Timer0(8 bit),Timer 1(16 bit),Timer2(8 bit)
-Timer0 thì được điều khiển bởi thanh ghi OPTION_REG
Timer1 thì được điều khiển bởi thanh ghi T1CON
Tiner2 thì được điều khiển bởi thanh ghi T2CON
Xét chế độ Timer0
Đây là bộ đếm 8 bit=>đếm tối đa từ 00 đến FF là tràn.
Được điều khiển bởi thanh ghi OPTION_REG
- Bit PS2:PS1:PS0 thiết lập tỷ lệ chia của TMR0 và wDT và prescale
0.0 2(TMR0 ) và 1:1(wDT)
-Bit PSA là bit để chọn bộ chia tần.khi PSA băng 1 thi bộ chia tần dùng cho wDT còn
khi PSA bằng 0 thì bộ chia tần số dùng cho timer0
Timer2