Bộ nhớ và thanh ghi

Chia sẻ: Bui Duc To | Ngày: | Loại File: DOC | Số trang:3

0
81
lượt xem
20
download

Bộ nhớ và thanh ghi

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Để 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)

Chủ đề:
Lưu

Nội dung Text: Bộ nhớ và thanh ghi

  1. 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 Z cờ Zero 1 khi kết quả của số học hoặc logic bằng 0 0 khi kết quả của số học hoặc logic bằng 1 DC bit mượn 1 khi mươn từ 4 bit thấp 0 khi không mượn từ 4 bit thấp C cờ mượn 1 khi mượn từ bit MSB 0 khi không mượn từ bít MSB -Thanh ghi OPTION-REG:(81h và 181h) cho phép đọc và ghi và điều khiển các pull-up trong PORTB,các tác động của ngắt ngoại vi và bộ đếm Timer RBPU bit enable Pull-up Port B 1 thi Pull up PortB bi vô hiệu hóa
  2. 0 thi được cho phép bằng cách chốt riêng port INTEDG bit chọn cạnh lên của sườn ngắt tại chân RB0/INT TOCS bit lựa chọn nguồn clock của timers PSA bit gán tỷ lệ(1 gán cho wdt ,0 gán cho timer) PS2:PS0 bit lựa chọn tỷ lệ gán Thanh ghi INTCON(thanh ghi điều khiển ngắt chung) GIE bit cho phép các nguon ngắt PEIE bit cho phép ngắt ngoại vi TMR01E Bit cho phep ngắt của timer INTE cho phép ngắt ngoài trên chân RB0/INT RB1E bit cho phép ngắt thay đổi trên cổng PORTB TMR)!F bit báo ngắt của timero Chú ý: Stack không nằm trong bộ nhớ dữ liệu hay bộ nhớ chương trình mà stack là một vùng nhớ dặc biệt không cho phép đọc hay ghi dữ liệu vào.Stack có thể nhớ(lưu trữ 8 địa chỉ theo phương pháp xoay vòng.không có cờ báo hiệu sack bị tràn mà stack hoàn toàn được điều khiển bằng CPU.Khi lệnh CALL hoặc lệnh rẽ nhánh thực hiện thì bộ đếm 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)
  3. -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 - Bit TOSE là bít chọn xung tác động lên cạnh lên,xuống (1 tác động cạch lên ,0 là tác động cạnh dưới) -Bit TOCS nói lên chọn xung clock nào =1 thì chọn từ chân RA4 còn bằng 0 thì chọn từ xung clovk bên trong -Bit 6 và Bit 7 it quan tâm .bit 6 =1 thì ngắt xảy ra trên cạnh dương còn =0 thì xảy ra trên cạnh âm.Bit 7 =1 thì không cho phép chân B kéo lên Pull-up(khó hiểu quá) và ngược lại Ví dụ Bit OPTION_REG =00110111=>cho phép chức năng Pull-up của PortB.bít 6=0 nên ngắt tác động lên cạnh âm .bit TOCS=1 nên nguồn clock chọn từ bên ngoài(chân RA4).TOSE =1 nên xung tác động lên cạnh lên.PAS=0 nên bộ chia tần dùng cho Timer0. 3 bit cuối PS2:PS0 bằng 111 thì tỷ lể chia cho prescale cho TMR0 la 1:256(hay ngược lại nhỉ????) Nếu nhớ và hiểu các bít trong OPTION_REG thì giải thích sơ đồ không khó ….. Timer1 là bộ định thời 16 bit.Kết quả được lưu trong 2 thanh ghi TMR1H và TMR1L Thanh ghi TCON1 sẽ điều khiển Timer1 Bit TMR1ON sẽ cho phép timer1 được làm việc hay không(1 là làm) Bit TMR1CS cho phép chọn xung clock từ ngoài hay trong (=1 là bên ngoài RC0/T1OSC) Bit T1SYNC điều khiển đồng bộ hóa xung clock đưa vào.Nếu bằng 1 thì không đông bộ với xung clock ngoại vi bên ngoài còn băng 0 thì đồng bộ với xung clock đưa vào Timer1 Bit T1OSCEN cho phép xung clock hoạt động hay không Bit 4,5 nói lên tỷ lệ chia T1CKPS1:T1CKPS0 11 là 1:8…. Bit 6,7 mặc định là 0 Ví dụ: cho thanh ghi TCON1 có giá trị 00011011=>bit 4,5 là 01 nên tỷ lệ chia là 1:2,bit 3 bằng 1 nên cho phép sử dụng xung clock .không quan tâm vì không dùng clock từ bên ngoài.bit1 bằng 1 nên chọn xung clock bên trong và bit 0 băng 1 là cho phép timer 1 sử dụng Timer2
Đồng bộ tài khoản