Dung lương bộ nhớ dữ liệu (sram) của pic18f4520

Chỉ mục bài viết
Bạn tự tìm hiểu về PIC: Viết chương trình cho PIC16F84A
1
Tất cả các trang

Trang 1 của 2

PIC (Peripheral Interface Controller) là IC lập trình dùng để điều khiển các thiết bị tự động, với các bộ nhớ chương trình (Flash ROM) và bộ nhớ đệm (SRAM).

Có thể xem PIC là một máy tính nhỏ, do trong PIC có bộ phận xử lý các mã lệnh, quen gọi là các chương trình đã được Bạn cho cài đặt vào bộ nhớ Flash ROM, có bộ nhớ SRAM, như vậy có thể xem PIC là loại IC đơn phiến, nghĩa là một mình nó có thể đủ cấu tạo thành một thiết bị vi điều khiển hoàn chỉnh. Chúng ta biết bộ nhớ trong PIC thường có dung lượng nhỏ (dung lượng lớn nhỏ còn tùy theo loại PIC). Tần số xung nhịp của PIC, tối đa thường là 20MHz và dung lượng bộ nhớ thường từ 1K đến 4K.

Trong bài viết này tôi sẽ viết về PIC16F84A, bài viết gồm có 3 phần:

Phần 1: Giới thiệu khái quát về  PIC16F84A

Phần 2: Trình bày  các ứng dụng của PIC16F84A qua một ứng dụng cụ thể.

Phần 3: Nói về  trình viết chương trình và giới thiệu về hộp nạp chương trình chi các IC họ PIC.

Phần 1:

Giới thiệu khái quát về  PIC16F84A 

PIC16F84A có các đặc tính sau:

* Chỉ dùng 35 câu lệnh để viết tất cả các chương trình nguồn cho PIC16Fxx.

* Tất cả các câu lệnh chỉ dùng 1 chu kỳ máy, các câu lệnh nhẩy dùng 2 chu kỳ máy.

* Tốc độ vận hành: dùng xung nhịp là 20MHz và chu kỳ máy là 200ns.

* Có bộ nhớ chương trình (Flash Program Memory) 1024 Word (1K x 14).

* Bộ nhớ RAM (RAM File Rigister) 68 byte.

* Bộ nhớ dữ liệu EEPROM 64 byte.

* Chiều rộng câu lệnh là 1 Word 14 bit.

* Xử lý dữ liệu dạng 8 bit (1 byte).

* Có 15 thanh ghi chuyên dụng SFR (Special Function Register) trong RAM.

* Dùng ngăn xếp có chiều xâu 8 lớp.

* Có mode truy cập theo địa chỉ trực tiếp, gián tiếp và địa chỉ tương đối.

* Có 4 dạng ngắt:

Ngắt ngoài trên tín hiệu trên chân RB0/INT.

Ngắt theo bit báo tràn của Timer 0.

Ngắt theo sự thay đổi trên các chân RB4, RB5, RB6, RB7.

Ngắt khi ghi xong dữ liệu vào bộ nhớ EEPROM. 

* Có 13 chân dùng xuất nhập dữ liệu (Ở cảngPort A có 5 chân và Port B có 8 chân).

* Có khả năng cấp dòng chảy vào/chảy ra đủ lớn: 25mA, đủ cấp cho các Led chiếu sáng.

* Có 1 đồng hồ Timer 0 (TMR0), dùng thanh đếm xung 8 bit, nên đếm được tối đa 256 nhịp.

* Với bộ nhớ chương trình Flash Program Memory, có thể xóa ghi được 1000 lần.

* Với bộ nhớ EEPROM có thể xóa ghi dữ liệu đến 1000000 lần.

* Dữ liệu cất giữ trong bộ nhớ EEPROM có thể an toàn tên 40 năm.

* Có thể lập trình và nạp ngay trên bo (ICSP, In-Circuit Serial Programming) chỉ dùng 2 chân.

* Có chức năng POR (Power On Reset), PWRT (Power-up Timer), OST (Oscillator  Start-up Timer).

* Chức năng Watch-dog (WDT) làm việc với mạch dao động RC riêng trong IC.

* Có mode bảo vệ mã. (Code Protection).

* Có mode Sleep dùng tiết kiệm điện năng khi ở trạng thái chờ.

* Có nhiều tùy chọn cho mạch dao động tạo xung nhịp chính.

* Làm việc với mức nguồn nuôi trong khoảng 2V đến 5.5V.

Hình 1: Cho thấy công dụng của các chân trên IC.

 

Trong hình này:

* OSC1/CLKIN là chân ngả vào của mạch dao động thạch anh. Định tần cho xung nhịp và cũng là một ngả vào của mạch tạo xung nhịp.

* OSC2/CLKOUT là chân ngả ra của mạch dao động thạch anh và là ngả ra của xung nhịp.

* /MCLR (Master Clear) là chân Reset, tác dụng của lệnh Reset là trả chương trình về địa chỉ 0000h. Lệnh tác dụng ở mức áp thấp.

* RA0, RA1, RA2, RA3, là các chân xuất nhập của bến cảng Port A.

* RA4/TOCKI là chân  đa nhiệm, vừa làm chân xuất nhập củaPort A và lại là chân lấy xung cho thanh đếm của đồng hồ Timer 0 (ở chân này có cực Drain để hở)

* RB0/INT là chân đa nhiệm, vừa làm chân xuất nhập củaPort B và lại là chân phát động theo ngắt ngoài. Các chân củaPort B có thể được lập trình để có trở kháng lớn dùng để làm ngả vào, nhập trạng thái ngoài vào PIC.  

* RB1, RB2, RB3, là các chân xuất nhập của bến cảng Port B.

* RB4, RB5, là các chân xuất nhập củaPort B và phát động ngắt theo sự thay đổi trên các chân này.

* RB6, là 1 chân xuất nhập củaPort B và phát động ngắt theo sự thay đổi trên chân này. Nó còn có thể lập trình để dùng chân này phát xung nhịp dùng cho công năng truyền dữ liệu nối tiếp.

* RB7, là 1 chân xuất nhập củaPort B và phát động ngắt theo sự thay đổi trên chân này. Nó còn có thể lập trình để dùng chân này trao đổi dữ liệu dùng cho công năng truyền dữ liệu nối tiếp.

* VSS là chân nối masse để lấy dòng (ở đây là dòng điện tử).

* VDD là chân nối vào đường nguồn dương (từ 2V đến 5.5V).

Flash Program Memory có dung lượng 1024 thanh nhớ, loại rộng 14 bit (1Kx14). Ở đây Bạn cất giữ các mã lệnh của chượng trình nguồn. Các mã lệnh được truy cập theo mã địa chỉ có trong thanh ghi PC (Program Counter). Mã lệnh xuất ra trên thanh ghi Instruction Register.

Thanh ghi Program Counter dùng ghi các địa chỉ của mã lệnh của bộ nhớ Flash ROM. Trong hoạt động, khi dùng lệnh nhẩy đến các chượng trình con, thì địa chỉ hiện tại sẽ được tạm thời cho cất giữ trong các thanh ghi ngăn xếp, ở đây chiều xâu ngăn xếp chỉ có 8 lớp (8 Level Stack).

Ngăn xếp 8 Level Stack dùng lưu giữ các mã địa chỉ của chượng trình chính khi trong chượng trình có dùng lệnh nhẩy. Địa chỉ cất vào ngăn xếp có thể hiểu như dùng lệnh Push và địa chỉ lấy ra từ ngăn xếp có thể hiểu như dùng lệnh Pop.

Instruction Register là thanh ghi mã lệnh, ở ngả ra, mã lệnh có thể chuyển đến khối giải mã Instruction Decode & Control để tạo ra lệnh điều khiển. Hay chuyển đến khối xử lý địa chỉ đa kênh Address Multiplex để truy cập các thanh nhớ trong bộ nhớ RAM (File Register).

Instruction Decode & Control là khối giải mã, xác đ?nh tính năng điều khiển trong câu lệnh, nó tác dụng vào khối đ?nh trạng thái cho IC. Khối này gồm có các chức năng: Power-up Timer, Oscillator Start-up Timer, Power-on Reset, Watchdog Timer. 

Power-up Timer dùng kích hoạt IC theo đồng hồ Timer.

Oscillator Start-up Timer dùng kích hoạt mạch dao động theo đồng hồ Timer.

Power-on Reset dùng “phục nguyên” các thanh ghi trong PIC khi nó mới được cấp nguồn.

Watchdog Timer dùng vào ra mode “Chó giữ nhà” theo đồng hồ Timer, một tính năng dùng tiết kiệm điện.

Timing Generation là khối tạo ra xung nhịp chính, tần số của xung nhịp thượng đ?nh theo thạch anh. PIC16F84A có thể hoạt động với xung nhịp 20MHz.

Đồng hồ Timer 0 (TMR0) dùng một thanh đếm 8 bit để tạo ra chức năng điều khiển theo thời gian. Nó có thể đếm tối đa 256 xung nhịp, khi thanh đếm đầy, bit báo tràn sẽ chuyển lên mức 1

Các bên cảng I/O Port (gồm Port A có 5 chân và Port B có 8 chân) dùng xuất nhập dữ liệu. Nhiều chân còn có tính đa nhiệm, nên ngoài công năng xuất nhập dữ liệu nó còn có các công năng khác. Như công năng nhập xung đếm trên chân RA4/TOCKI, công năng ngắt trên chân RB0/INT…

Bộ nhớ dữ liệu EEPROM Data Memory, đây là bộ nhớ xóa ghi được trên 1 triệu lần, EEPROM có 64 thanh nhớ, với độ rộng 8 bit (1 byte). Để truy cập dữ liệu trong các thanh nhớ, mã địa chỉ sẽ chuyển vào thanh ghi EEADR và dữ liệu xuất nhập trên thanh ghiEEDATA

Bộ nhớ RAM File Register, đây là bộ nhớ RAM có 68 thanh nhớ, với độ rộng 8 bit, trong đó có 12 thanh nhớ chuyên dụng (SFR, Special Function Register), các thanh nhớ còn lại được dùng làm thanh nhớ phổ dụng (GPR, General Purpose Register). Các thanh nhớ chuyên dụng xác đ?nh hoạt động của IC, các thanh nhớ phổ dụng dùng làm thanh nhớ tạm. Khi IC mất nguồn, các dữ liệu trong các thanh nhớ RAM đều bị xóa sạch. Ngượi ta truy cập dữ liệu trong các thanh nhớ của RAM với bó nối mã địa chỉ RAM Addr (7 đ?ờng) và xuất nhập dữ liệu trên bó nối Data Bus (8 đường)

Thanh ghi FSR (File Select Register) dùng truy tìm dữ liệu theo mã địa chỉ gián tiếp (Indirect Address), dùng bó nối Indirect Addr (7 đ?ờng).

Thanh ghi STATUS (Status Register) dùng chọn đ?nh các điều kiện lvievj cho IC.

MUX (Multiplex) là khối xử lý đa nhiệm, nó cung cấp mã cho khối tính toán ALU.

ALU (Arithmetic & Logic Unit) là khối thực hiện các phép toán số học và logic. Không có bộ phận này, IC không được gọi là IC máy tính.

Thanh ghi W reg (Work Register) là thanh ghi công tác, nó cất giữ các kết quả của khối toán ALU.

Hình 3: Tìm hiệu bộ nhớ Flash Program Memory (tức bộ nhớ EEPROM).

 

Sau đây chúng ta tìm hiểu cấu trúc các thanh ghi, bộ nhớ trong PIC16F84A:

Flash Memory được dùng để lưu giữ các mã lệnh của chương trình nguồn. Ở đây 1 Word là 14 bit. Nó có 1024 thanh nhớ (quen gọi là 1Kword). Khi IC bị mất nguồn, các dữ liệu cất trong các thanh nhớ sẽ không bị xóa mất. Số lần xóa ghi của loại bộ nhớ này không quá 1000 lần. Chúng ta biết mỗi thanh nhớ sẽ được xác đ?nh theo một mã địa chỉ. Địa chỉ khởi đầu là 0000h.



Chủ đề