You are on page 1of 21

Phần I.

Tổng quan về kiến trúc máy tính

1.Sơ lược lịch sử phát triển của máy tính.

1801: Tại Pháp, Joseph Marie Jacquard phát minh ra máy dệt sử dụng thẻ gỗ đục lỗ
để tự động dệt các thiết kế vải. Mô hình máy tính ban đầu sử dụng thẻ đục lỗ tương
tự như vậy.
1822: Nhà toán học người Anh Charles Babbage “thai nghén” ý tưởng về một máy
tính điều khiển bằng hơi nước, có thể tính toán các bảng số. Dự án, được tài trợ bởi
chính phủ Anh, sau đó đã thất bại. Tuy nhiên, hơn một thế kỷ sau, máy tính đầu tiên
trên thế giới đã thực sự được chế tạo. Theo Wikipedia, Charles Babbage chính là
"cha đẻ của máy tính", người có ý tưởng về máy tính giống với những gì chúng ta
thấy ở hiện tại nhất.
1890: Herman Hollerith thiết kế một hệ thống thẻ đục lỗ để tính toán cuộc điều tra
dân số năm 1880, hoàn thành nhiệm vụ chỉ trong ba năm và tiết kiệm cho chính phủ
5 triệu đô la. Ông thành lập ra công ty tiền thân của tập đoàn IBM hiện nay.
1936: Alan Turing trình bày khái niệm về một cỗ máy vạn năng, sau này được gọi là
máy Turing, có khả năng tính toán bất cứ thứ gì có thể tính toán được. Khái niệm
cốt lõi của máy tính hiện đại dựa trên ý tưởng này của ông.
1937: J.V. Atanasoff, giáo sư vật lý và toán học tại Đại học bang Iowa, cố gắng chế
tạo chiếc máy tính đầu tiên không có bánh răng, dây đai hoặc trục.
1939: Công ty Hewlett-Packard được thành lập bởi David Packard và Bill Hewlett
trong một gara ở Palo Alto, California (theo bảo tàng lịch sử máy tính).
1941: Atanasoff và sinh viên của ông, Clifford Berry, đã thiết kế một máy tính có thể
giải quyết 29 phương trình đồng thời. Điều này đánh dấu sự kiện lần đầu tiên một
máy tính có thể lưu trữ thông tin trên bộ nhớ chính của nó.
1943 - 1944: Hai giáo sư của Đại học Pennsylvania, John Mauchly và J. Presper
Eckert, đã xây dựng máy tính Electronic Numerical Integrator and Calculator
(ENIAC). Được coi là “ông nội” của máy tính kỹ thuật số hiện đại, thân hình đồ sộ
của nó chiếm hết một căn phòng với diện tích 6x12m, gồm 40 kệ cao 2,4m và có
18.000 ống chân không. Nó có khả năng xử lý 5.000 phép tính/một giây và hoạt
động nhanh hơn bất cứ thiết bị nào trước đó.
1946: Mauchly và Presper rời Đại học Pennsylvania và nhận tài trợ từ Cục điều tra
dân số để xây dựng UNIVAC, máy tính thương mại đầu tiên cho các ứng dụng kinh
doanh và cho chính phủ.
1947: William Shockley, John Bardeen và Walter Brattain của Bell Laboratories
(Phòng thí nghiệm Bell) đã phát minh ra bóng bán dẫn. Họ đã phát hiện ra cách chế
tạo một công tắc điện bằng vật liệu rắn và không cần chân không.
1958: Jack Kilby và Robert Noyce công khai mạch tích hợp, được gọi là chip máy
tính. Kilby đã được trao giải thưởng Nobel Vật lý năm 2000 cho công trình của mình.
1960: NEAC 2203 được chế tạo bởi hãng điện Nippon (NEC) và là một trong những
chiếc máy tính bán dẫn sớm nhất ở Nhật Bản. Chúng được ứng dụng trong các lĩnh
vực kinh doanh, khoa học và ứng dụng kỹ thuật.

NEAC 2203
1964: Douglas Engelbart đưa ra nguyên mẫu của máy tính hiện đại, với chuột và
giao diện người dùng đồ họa (GUI). Điều này đánh dấu sự phát triển của máy tính
từ một cỗ máy chuyên dụng dành cho các nhà khoa học và toán học sang công
nghệ dễ tiếp cận hơn với công chúng.
1964: Cũng trong năm này, IBM System/360 được giới thiệu, nó là máy tính đầu tiên
kiểm soát toàn bộ phạm vi ứng dụng từ nhỏ tới lớn, từ thương mại tới khoa học.
Người dùng có thể phóng to hay thu nhỏ các thiết lập của mình mà không phải đau
đầu về việc nâng cấp phần mềm. Các mẫu System/360 cao cấp có vai trò lớn trong
các sứ mệnh của con tàu vũ trụ Apollo của NASA cũng như các hệ thống theo dõi
lưu lượng không khí.

1964: CDC 6600 được kiến trúc sư máy tính Seymour Cray thiết kế, nó đã từng là bộ
máy nhanh nhất trên thế giới. Sản phẩm vẫn giữ được “ngôi quán quân tốc độ” cho
đến năm 1969 khi Cray thiết kế siêu máy tính tiếp theo của ông.

Máy tính CDC 6600


1965: DEC PDP-8 được chế tạo bởi công ty Thiết bị kỹ thuật số (DEC) và là chiếc
máy tính mini đầu tiên được thương mại hóa thành công. Khi tung ra thị trường,
DEC PDP-8 đã bán được hơn 50.000 chiếc. Chúng có thể thực hiện mọi công việc
của một chiếc máy tính lớn nhưng giá chỉ khoảng 16.000 USD trong khi System/360
của IBM lên tới hàng trăm ngàn USD.

Máy tính DEC PDP-8

1969: Một nhóm các nhà phát triển tại Bell Labs sản xuất UNIX, một hệ điều hành
giải quyết được những vấn đề về tương thích. Được viết bằng ngôn ngữ lập trình C,
UNIX có khả năng portable trên nhiều nền tảng và trở thành hệ điều hành được lựa
chọn tại nhiều công ty lớn và các tổ chức chính phủ. Do tính chất chậm chạp của hệ
thống, UNIX không bao giờ thu hút được người dùng PC tại nhà.

1969 cũng đánh dấu sự ra đời của Interface Message Processor (IBP) đặc trưng
cho thế hệ gateway đầu tiên và ngày nay được biết đến là các bộ định tuyến
(router). Như vậy, IMP thực hiện những tác vụ quan trọng trong việc phát triển mạng
chuyển mạch gói đầu tiên trên thế giới (ARPANET) và là người tiền nhiệm của
Internet toàn cầu hiện nay.
1970: Công ty Intel mới thành lập công bố sản phẩm Intel 1103, chip Dynamic
Access Memory (DRAM) đầu tiên.
1974 - 1977: Một số máy tính cá nhân được tung ra thị trường, bao gồm Scelbi &
Mark-8 Altair, IBM 5100, TRS-80 của Radio Shack (được gọi một cách thân mật là
"Trash 80") và PEToreore.
1975: Tạp chí Popular Electronics số tháng 1 đã mô tả Altair 8080 là "bộ máy tính
mini đầu tiên trên thế giới". Hai chuyên viên máy tính, Paul Allen và Bill Gates, đề
nghị viết phần mềm cho Altair, sử dụng ngôn ngữ BASIC mới. Vào ngày 4 tháng Tư,
sau thành công của nỗ lực đầu tiên này, hai người bạn thời thơ ấu thành lập công ty
phần mềm của riêng họ, Microsoft.
1976: Cray-1 được phát hành, ở thời điểm đó, Cray-1 là bộ máy tính toán có tốc độ
nhanh nhất trên thế giới. Dù mức giá khoảng từ 5-10 triệu USD nhưng vẫn bán
chạy. Chúng là một trong những sản phẩm được kiến trúc sư máy tính Seymour
Cray thiết kế. Ông đã cống hiến cả cuộc đời mình cho việc chế tạo ra cái gọi là siêu
máy tính.

Máy tính Cray-1


1977: Số lượng TRS-80 của Radio Shack sản xuất lần đầu chỉ là 3.000 và bán rất
chạy. Lần đầu tiên, những người không phải chuyên viên máy tính có thể viết
chương trình và điều khiển máy tính làm những gì họ muốn.

Máy tính TRS-80

1977: Jobs và Wozniak hợp nhất Apple và cho ra mắt Apple II tại hội chợ công nghệ
West Coast Computer Faire đầu tiên. Apple II cung cấp đồ họa màu và kết hợp một
ổ cassette âm thanh để lưu trữ.
1978: Những người làm công việc kế toán hân hoan với sự ra đời của VisiCalc,
chương trình bảng tính trên máy tính đầu tiên.
1979: Việc xử lý văn bản trở thành hiện thực khi MicroPro International phát hành
Wordstar. "Thay đổi quan trọng nhất là việc thêm lề và thuộc tính word wrap (làm
cho những từ dài xuống hàng mà không làm vỡ layout)", theo phát biểu của Rob
Barnaby, người tạo ra VisiCalc. Những thay đổi khác bao gồm loại bỏ chế độ lệnh
và thêm chức năng in.
1981: Máy tính cá nhân đầu tiên của IBM, có tên là "Acorn", được giới thiệu. Acorn
sử dụng hệ điều hành MS-DOS của Microsoft, có chip Intel, hai ổ đĩa mềm và màn
hình màu tùy chọn. Sears & Roebuck và Computerland đã bán những chiếc máy
tính này, đánh dấu sự kiện lần đầu tiên máy tính có sẵn thông qua các nhà phân
phối bên ngoài. Điều này cũng khiến thuật ngữ PC trở nên phổ biến.
1981: Máy tính di động Osborne 1 là chiếc máy tính di động đầu tiên được thương
mại hóa, nặng 10,8kg và có giá dưới 2000 USD. Chúng trở nên phổ biến vì có giá
thành thấp và có một thư viện phần mềm mở rộng đi kèm theo.

Máy tính di động Osborne 1

1983: Lisa của Apple là máy tính cá nhân đầu tiên có GUI. Lisa cũng có một menu
drop-down và các biểu tượng. Nó thất bại nhưng cuối cùng được phát triển thành
Macintosh. Gavilan SC là máy tính xách tay đầu tiên có yếu tố hình thức lật quen
thuộc và là sản phẩm đầu tiên được bán trên thị trường dưới dạng "máy tính xách
tay".
1983: Hewlett-Packard 150 ra đời, đại diện cho bước đi đầu tiên trong việc mở rộng
công nghệ hiện nay. HP 150 là chiếc máy tính đầu tiên được thương mại hóa với
công nghệ màn hình cảm ứng. Màn hình cảm ứng 9-inch của sản phẩm được trang
bị các bộ thu và phát hồng ngoại ở xunh quanh để phát hiện vị trí ngón tay của
người dùng.

Máy tính Hewlett-Packard 150

1985: Microsoft công bố Windows (theo Encyclopedia Britannica). Đây là sự đáp trả


của công ty này đối với GUI của Apple. Commodore công bố Amiga 1000, có tính
năng âm thanh và video tiên tiến.
1986: Compaq đưa Deskpro 386 ra thị trường. Cấu trúc 32-bit của nó cung cấp tốc
độ tương đương với máy tính mainframe.
1993: Bộ vi xử lý Pentium thúc đẩy việc sử dụng đồ họa và âm nhạc trên PC.
1994: PC trở thành cỗ máy chơi game, với việc một số những game như "Command
& Conquer", "Alone in the Dark 2", "Theme Park", "Magic Carpet", "Descent" và
"Little Big Adventure" được tung ra thị trường.
1996: Sergey Brin và Larry Page phát triển công cụ tìm kiếm Google tại Đại học
Stanford.
1997: Microsoft đầu tư 150 triệu đô la vào Apple, lúc đó đang gặp khó khăn, chấm
dứt vụ kiện tại tòa án của Apple chống lại Microsoft, cáo buộc rằng Microsoft đã sao
chép "giao diện" của hệ điều hành Apple. Cũng trong khoảng thời gian này, dự án
Deep Blue (bắt đầu tại IBM vào cuối những năm 80, được tạo ra để giải quyết các
vấn đề khó khăn bằng cách sử dụng công nghệ xử lý song song) đã đánh bại quán
quân cờ vua thế giới, Garry Kasparov.

Quán quân cờ vua thế giới 1997, Garry Kasparov

2003: Bộ xử lý 64-bit đầu tiên, Athlon 64 của AMD, có sẵn cho thị trường tiêu dùng.
2006: Apple giới thiệu MacBook Pro, máy tính di động lõi kép, dựa trên Intel đầu tiên,
cũng như iMac dựa trên Intel. Trong cùng năm này, game console Wii của Nintendo
cũng được tung ra thị trường.
2007: Sự ra đời của iPhone mang nhiều chức năng máy tính đến với điện thoại
thông minh.
2016: Máy tính lượng tử có thể lập trình lại đầu tiên được tạo ra. "Cho đến nay, chưa
có bất kỳ nền tảng điện toán lượng tử nào có khả năng lập trình các thuật toán mới
vào hệ thống. Chúng thường được thiết kế để thâm nhập một thuật toán cụ thể",
theo tác giả nghiên cứu Chaianu Debnath, nhà vật lý lượng tử và kỹ sư quang học
tại Đại học Maryland, College Park.
2017: Cơ quan Defense Advanced Research Projects Agency (DARPA) đang phát
triển chương trình "Molecular Informatics” (Tin học phân tử) mới, sử dụng các phân
tử làm máy tính. "Hóa học cung cấp một tập hợp các thuộc tính phong phú mà
chúng ta có thể khai thác để lưu trữ và xử lý thông tin nhanh chóng", theo Anne
Fischer, quản lý chương trình tại bộ phận Khoa học Quốc phòng của DARPA, cho
biết trong một tuyên bố.

"Hàng triệu phân tử tồn tại và mỗi phân tử có cấu trúc nguyên tử ba chiều độc đáo
cũng như các biến như hình dạng, kích thước hoặc thậm chí màu sắc. Sự phong
phú này cung cấp một không gian thiết kế rộng lớn, để khám phá các cách thức
mới, đa giá trị để mã hóa, cũng như xử lý dữ liệu vượt khỏi các giá trị 0 và 1 của
những kiến trúc kỹ thuật số dựa trên logic hiện tại".

2. Kiến trúc của một máy tính điển hình.

Cấu trúc của một máy tính điển hình gồm bộ xử lí trung tâm (CPU), bộ nhớ và các
thiết bị đầu vào, đầu ra.

Bộ nhớ: gồm bộ nhớ trong (RAM, ROM…), bộ nhớ ngoài (flash, ổ cứng…).

Thiết bị vào/ra: bàn phím, chuột, màn hình….

3. Cấu trúc cơ bản của một bộ vi xử lí (CPU).

*Khối điều khiển(CU- Control Unit) :


Bộ điều khiển (Control Unit) là một phần của bộ xử lý trung tâm của máy
tính  (CPU), bộ phận này chỉ đạo hoạt động của bộ vi xử lý. Nó đã được
đưa vào như một phần của kiến trúc Von Neumann bởi John von
Neumann.

Thiết bị điều khiển có trách nhiệm thông báo cho bộ nhớ, đơn vị số
học/logic và các thiết bị đầu vào và đầu ra của máy tính cách phản hồi các
lệnh đã được gửi đến bộ xử lý. Nó tìm nạp các lệnh nội bộ của chương
trình từ bộ nhớ chính đến thanh ghi lệnh của bộ xử lý và dựa trên nội dung
thanh ghi này, khối điều khiển tạo ra một tín hiệu điều khiển giám sát việc
thực hiện các lệnh này.

Bộ điều khiển hoạt động bằng cách nhận thông tin đầu vào mà nó chuyển
thành tín hiệu điều khiển, sau đó được gửi đến bộ xử lý trung tâm. Sau đó,
bộ xử lý của máy tính sẽ thông báo cho phần cứng kèm theo những thao
tác cần thực hiện. Các chức năng mà khối điều khiển thực hiện phụ thuộc
vào loại CPU vì kiến trúc của CPU khác nhau giữa các nhà sản xuất.

C
U ( Control Unit)
*Chức năng của CU:

 Điều phối chuỗi di chuyển dữ liệu vào, ra và giữa nhiều đơn vị con
của bộ xử lý.
 Kiểm soát luồng dữ liệu bên trong bộ xử lý.
 Nhận các lệnh hoặc lệnh bên ngoài mà nó chuyển đổi thành chuỗi
tín hiệu điều khiển.
 Điều khiển nhiều đơn vị thực thi (tức là ALU, bộ đệm dữ liệu và
thanh ghi) được chứa trong CPU.
 Xử lý nhiều tác vụ, chẳng hạn như tìm nạp, giải mã, xử lý thực thi
và lưu trữ kết quả.

*Khối tính toán(ALU):

Đơn vị logic số học (ALU) là một mạch kĩ thuật số được sử dụng để thực
hiện các phép toán số học và logic. Nó đại diện cho khối xây dựng cơ bản
của đơn vị xử lý trung tâm (CPU) của máy tính. Các CPU hiện đại chứa
các ALU rất mạnh và phức tạp. Ngoài ALU, các CPU hiện đại còn chứa
một đơn vị điều khiển (CU).

Hầu hết các hoạt động của CPU được thực hiện bởi một hoặc nhiều ALU,
bộ phận này tải dữ liệu từ các thanh ghi đầu vào. Thanh ghi là một lượng
nhỏ dung lượng lưu trữ có sẵn như một phần của CPU. Khối điều khiển
cho ALU biết thao tác nào sẽ thực hiện trên dữ liệu đó và ALU lưu trữ kết
quả trong một thanh ghi đầu ra. Khối điều khiển di chuyển dữ liệu giữa các
thanh ghi này, ALU và bộ nhớ.

*Cách thức hoạt động:

Cách thức hoạt động của ALU

ALU thực hiện các phép toán số học và logic cơ bản.

 Phép toán số học là cộng, trừ, nhân và chia.


 Phép toán logic là so sánh các giá trị như NOT, AND và OR.
 

Tất cả thông tin trong máy tính được lưu trữ và thao tác dưới dạng số nhị
phân, tức là 0 và 1. Công tắc bán dẫn được sử dụng để điều khiển các số
nhị phân vì chỉ có hai trạng thái có thể có của công tắc: mở hoặc đóng.

 Một bóng bán dẫn mở, qua đó không có dòng điện, biểu thị giá trị
0.
 Một bóng bán dẫn kín, qua đó có dòng điện, biểu thị giá trị 1.
Các hoạt động có thể được thực hiện bằng cách kết nối nhiều bóng bán
dẫn. Một bóng bán dẫn có thể được sử dụng để điều khiển bóng bán dẫn
thứ hai – trên thực tế, bật hoặc tắt công tắc bóng bán dẫn tùy thuộc vào
trạng thái của bóng bán dẫn thứ hai. Đây được gọi là một cổng vì sự sắp
xếp có thể được sử dụng để cho phép hoặc dừng dòng điện.

Cấu tạo của cổng NOR


Một số cổng logic mà ALU sử dụng:

Các cổng Logic cơ bản


Các cổng logic đều có input và output, tùy theo chức năng của các cổng sẽ
cho ra kết quả khác nhau.

*Thanh ghi (Register)

Trong kiến trúc máy tính, một thanh ghi (registers) là một bộ nhớ dung
lượng nhỏ và rất nhanh được sử dụng để tăng tốc độ xử lý của các
chương trình máy tính bằng cách cung cấp các truy cập trực tiếp đến các
giá trị cần dùng.

Hầu hết, nhưng không phải tất cả, các máy tính hiện đại hoạt động theo
nguyên lý chuyển dữ liệu từ bộ nhớ chính vào các thanh ghi, tính toán trên
chúng, sau đó chuyển kết quả vào bộ nhớ chính.

Các thanh ghi xử lý là phần đầu tiên của phân cấp bộ nhớ, và cung cấp
nhanh nhất vào hệ thống để xử lý dữ liệu. Thuật ngữ này thường được
dùng để nói đến một tập các thanh ghi có thể được chỉ trực tiếp cho việc
nhập hay xuất các câu lệnh, xem thêm ở tập lệnh. Chúng được gọi là ”
kiến trúc thanh ghi”.

Phần điều khiển

Thực hiện việc điều khiển các khối và điều khiển tần số xung nhịp. Mạch
xung nhịp đồng hồ hệ thống dùng để đồng bộ các thao tác xử lý trong và
ngoài CPU theo các khoảng thời gian không đổi. Khoảng thời gian chờ
giữa hai xung gọi là chu kỳ xung nhịp.

Tốc độ đo số chu kì mà CPU thực hiện mỗi giây gọi là tốc độ xung nhịp –
tốc độ đồng hồ tính bằng triệu đơn vị mỗi giây (MHz)

Các hoạt động cơ bản của CPU là thực hiện một chuỗi các tập lệnh được
lưu trữ, gọi là chương trình. Các mã lệnh chờ thực hiện này được lưu giữ
trong một số loại bộ nhớ như ROM, EPROM, FLASH.

Gần như tất cả các CPU đều hoạt động theo các bước: lấy thông tin, giải
mã và thực hiện lệnh khi hoạt động, và được gọi chung là chu kỳ lệnh.

Sau khi thực hiện một lệnh, thanh ghi con trỏ lệnh sẽ tăng lên 1 đơn vị, và
tiếp tục thực hiện lệnh tiếp theo.

Nếu một lệnh nhảy được thực hiện, con trỏ lệnh sẽ được sửa đổi để chứa
địa chỉ của lệnh đã thay đổi và thực hiện chương trình tiếp tục như bình
thường. Trong các CPU phức tạp hơn, nhiều lệnh có thể được tải xuống,
giải mã, và thực hiện đồng thời.

Trong vi xử lý, một số lệnh khác thay đổi trạng thái của các bit trong một
thanh ghi “cờ”. Những cờ này có thể được sử dụng để thay đổi cách ứng
xử của chương trình, vì chúng thường chỉ ra kết quả của các toán tử khác
nhau.
Ví dụ, trong bộ vi xử lý khi một lệnh “so sánh” đánh giá hai giá trị, chúng
xóa bit trong những thanh ghi cờ để chỉ ra số nào lớn hơn số nào, hoặc hai
số được so sánh là bằng nhau, một trong những cờ này sau đó có thể
được một lệnh nhảy sử dụng để xác định rẽ nhánh tùy theo kết quả so
sánh trên.

Tốc độ CPU còn phụ thuộc vào nhiều yếu tố như:

 Số nhân xử lý (2,4,10,22 nhân…), càng nhiều nhân càng mạnh


 Công nghệ sản xuất (32 nm, 22 nm,14 nm..), càng nhỏ càng tiết
kiệm điện và hiệu năng cao hơn.
 Công nghệ làm tăng tốc độ xử lý của CPU (pipeline, turbo boost,
siêu phân luồng, v.v.),
 Bộ nhớ đệm – bộ nhớ dùng để lưu các lệnh/dữ liệu thường dùng
hay có khả năng sẽ được dùng trong tương lai gần, giúp giảm bớt
thời gian chờ đợi của CPU.
 Đồ họa tích hợp
 TDP (công suất thoát nhiệt), lượng nhiệt chip xử lý tỏa ra mà hệ
thống làm mát cần phải giải tỏa. TDP thường cho biết mức tiêu
thụ điện của con chip, con số này càng thấp càng tốt.

Phần II. Cấu trúc của PIC 18F4520.


- Kiến trúc của vi điều khiển PIC 18F4520
Hình 2.1: Sơ đồ khối của PIC 18F4520

Các khối chính trên PIC 18F4520 bao gồm:

• CPU: Tần số tối đa 40MHz, kiến trúc Havard, được sản xuất bằng công nghệ nano
Watt.

• Bộ nhớ:

Bộ nhớ chương trình FLASH: 32K

RAM: 1536 bytes

Bộ nhớ dữ liệu EEPROM: 256 bytes


• Cổng vào ra: A,B,C,D,E Cổng A: RA0-RA7

Cổng B: RB0-RB7 Cổng C:


RC0-RC7

Cổng D: RD0-RD7

Cổng E: RE0-RE3
• Định thời/đếm: 4 bộ (Timer2: 8bit; Timer0,1,3: 16 bit)

• PWM: 2 bộ (CCP1:RC2; CCP2:RC1)

• Truyền thông nối tiếp L2 module: MSSP và EUSART

Module MSSP gồm 2 module: SPI(Serial Peripheral Interface) và IC

(Intergrated Circuit)

• ADC: 13 kênh ADC với độ phân giải 10bit

- Nguyên lý hoạt động của các chân vào ra dữ liệu và minh họa
bằng ví dụ.
Vi điều khiển PIC 18F4520 có 36 chân vào/ra được chia thành 5
cổng là PORTA, PORTB, PORTC, PORTD có 8 chân và PORTE có 4
chân. Các chân vào/ra của vi điều khiển PIC 18F4520 mang nhiều
chức năng, nó có thể được thiết lập là chân vào/ra dữ liệu hay là
các chân chức năng đặc biệt của các bộ ngoại vi, sử dụng các
thanh ghi điều khiển của ngoại vi để lựa chọn chức năng cho các
chân. Mỗi cổng vào/ra của vi điều khiển PIC 18F4520 có 3 thanh
ghi để điều khiển hoạt động:
+ Thanh ghi PORT là thanh ghi dữ liệu, được định địa chỉ theo byte
và theo bit, sử dụng để đệm đọc/ghi dữ liệu trên các cổng.
+ Thanh ghi LAT là thanh ghi chốt dữ liệu đầu ra (bằng '1' đầu ra
chốt mức 1, bằng '0' đầu ra chốt mức 0).
+ Thanh ghi TRIS là thanh ghi lựa chọn hướng dữ liệu (bằng '0'
chiều ra, bằng '1' chiều vào)
- Trình bày cấu tạo, lập trình với ngắt ngoài và minh họa bằng ví
dụ đếm sản phẩm sử dụng ngắt.
Ngắt ngoài INT0, INT1 và INT2 Được tích cực bằng sườn xung bên ngoài
đặt lên các chân RB0/INT0, RB1/INT1 và RB2/INT2 tương ứng. Nếu bit
INTEDGx trên thanh ghi INTCON2 được thiết lập(=1), ngắt ngoài tương ứng
sẽ được kích cực bằng sườn dương và ngược lại. Khi có sườn xung trên
chân RBx/INTx, bit cờ ngắt INTxIF được thiết lập. Phải xoá bit cờ ngắt khi
muốn lặp lại quá trình cho phép ngắt. Riêng ngắt ngoài với INT0, INTxIP
luôn ở mức ưu tiên cao
- Trình bày cấu tạo, lập trình với Timer 0, Timer 1 và minh họa
bằng ví dụ tạo xung.
Timer0 là bộ timer 16 bit tuy nhiên bộ timer có thể hoạt động được ở
cả chế độ 8 bit. Timer0 có thể dùng làm bộ đếm hoặc định thời với
nguồn xung | từ bộ dao động trên chíp hoặc từ ngoài đưa vào qua
chân TOCLKI.
Ở chế độ 8 bit, giá trị của Timer0 chỉ chứa trong thanh ghi TMR0L, khi
tràn (khi có sự chuyển giá trị đếm từ 255 sang 0), cờ ngắt tràn
TMROIF được đặt bằng 1. Nguồn xung cấp cho Timero có thể lấy từ 2
nguồn: – Khi bit TOCS = 0, xung được lấy từ bộ dao động trên chip,
tần số của xung bằng 1/4 tần số của bộ dao động thạch anh được sử
dụng (Fosc/4)
Ở chế độ 16 bit, giá trị của Timer0 được chứa trong thanh ghi TMROL
(byte thấp) và TMR0 High Byte (byte cao), TMROH đóng vai trò là bộ
đệm của byte cao trong quá trình ghi đọc. Khi tràn (khi có sự chuyển
giá trị đếm từ 65535 sang 0), cờ ngắt tràn TMROIF được đặt bằng 1.
Việc lựa chọn nguồn xung, kiểu tác động của xung và bộ chia tần
hoàn toàn giống chế độ 8 bit
- Trình bày cấu tạo, lập trình với PWM và minh họa bằng ví dụ
điều chế độ rộng xung.
Vi điều khiển PIC18F4520 có 2 bộ CCP (Capture/Compare/PWM). Mỗi
bộ CPP có thể hoạt động ở chế độ chụp, so sánh hoặc điều chế độ
rộng xung PWM. Bộ CCP sử dụng thanh 16 bit để chụp, so sánh và tạo
độ rộng của xung PWM. Trong phần này sẽ đề cập đến hoạt động của
CPP ở chế độ tạo xung PWM. Trong chế độ PWM, xung PWM được
tạo ra trên các chân CCP, với độ phân giải lên đến 10 bit. Chân CCP1
được ghép với RC2 (RC2/CCP1) và chân CPP2 có thể được ghép với
RC1 (RC1/CCP2) hoặc RB3 (RB3/CCP2). Các chân CCPx cần phải được
chọn chiều ra.
Để sử dụng các bộ PWM, cần thực hiện các công việc sau:
+ Chọn chế độ OSC (thường chọn chế độ HS).
+ Lựa chọn chân RCx có chiều ra, tín hiệu số.
+ Đặt giá trị cho thanh ghi CCPxCON, cấu hình module CCPx là bộ
PWM.
+ Thiết lập hệ số chia tần (Prescale) cho bộ Timer2, cho phép bộ
Timer2 bằng cách ghi giá trị vào T2CON.
+ Thiết lập chu kỳ.
+Thiết lập độ rộng xung dương.
- Trình bày cấu tạo, lập trình với bộ chuyển đổi tương tự số ADC
và minh họa bằng ví dụ đọc điện áp từ biến trở.
Các bộ vi điều khiển chỉ có khả năng xử lý và tính toán được với tín
hiệu số, trong khi các đại lượng vật lý cần đo như điện áp, dòng điện,
nhiệt độ, áp suất v.v... là các tín hiệu tương tự. Vì vậy các tín hiệu
tương tự cần phải chuyển đổi thành tín hiệu số bằng bộ biến đổi
tương tự – số trước khi đưa vào - vi điều khiển. Bộ chuyển đổi tương
tự – số (ADC – Analog to Digital Converter) có chức năng chuyển đổi
mức điện áp tương tự (đầu vào) thành tín hiệu số tương ứng (đầu
ra).
Các thanh ghi của ADC:
+Thanh ghi chứa kết quả byte cao: ADRESH (A/D Result High
Register).
+Thanh ghi chứa kết quả byte thấp: ADRESL (A/D Result Low
Register).
+ Thanh ghi điều khiển A/D 0: ADCON0 (A/D Control Register 0).
+ Thanh ghi điều khiển A/D 1: ADCON1 (AD Control Register 1).
+ Thanh ghi điều khiển A/D 2: ADCON2 (A/D Control Register 2).
Thanh ghi ADCON0 được sử dụng để điều khiển hoạt động của
module ADC. Thanh ghi ADCON1 được sử dụng để cấu hình các chân
AN0 đến AN12 của các PORT vào/ra. Thanh ghi ADCON2 được sử
dụng để cấu hình nguồn xung cho module ADC, thời gian thu nhận và
lựa chọn cách đặt 10 bit số sau khi biến đổi vào thanh ghi kết quả
ADRESH và ADRESL.

- Trình bày cấu tạo, lập trình với USART và minh họa bằng ví dụ
truyền nhận dữ liệu.
*Hàm: Busy USART
Chức năng: Hàm báo bận của hoạt động truyền nối tiếp.
Nguyên mẫu: char BusyUSART(void);
Chú thích: Sử dụng để báo trạng thái truyền của PORT nối tiếp.
Giá trị trả về:
Bằng 0 nếu hoạt động truyền đang ở trạng thái nghỉ sát.
Bằng 1 nếu đang truyền.
*Hàm: OpenUSART.
Chức năng: Cấu hình cho port nối tiếp.
*Hàm: CloseUSART.
chức năng: Cấm USART.
*Hàm: WriteUSART.
Chức năng: Ghi một byte vào bộ đệm truyền của USART.
Nguyên mẫu: void WriteUSART (char data);
Chú thích: Hàm được sử dụng để truyền đi một byte.
Vi du: WriteUSART(0x41);//truyền ký tự A.
*Hàm: ReadUSART.
Chức năng: Nhận một byte từ bộ đệm nhận của USART
Nguyên mẫu: char ReadUSART (void);
Chú thích: Hàm được sử dụng để nhận một byte.
Ví dụ: char x;
x = ReadUSART();
*Hàm: putsUSART
Chức năng: Nhận một byte từ bộ đệm nhận của USART
Nguyên mẫu: char ReadUSART (void);
Chú thích: Hàm được sử dụng để nhận một byte .
Vi du: char x;
x = ReadUSART();

You might also like