TỔNG QUAN VỀ CÁC HỆ VI XỬ LÝ
Cấu trúc của hệ vi xử lý và máy vi tính
2 Bài 2: Các đơn vi vi xử lý trung tâm 2 0.5 1.5
1 Trung tâm vi xử lý mP 8085 0.25 0.25
2 Các trung tâm vi xử lý họ 80x86 1.75 0.25 1.5
3 Bài 3: Bộ nhớ trong của hệ vi xử lý 4 1 3
1 Bộ nhớ trong hệ vi xử lý 2 0.5 1.5
2 Tổ chức bộ nhớ cho hệ vi xử lý 2 0.5 1.5
4 Bài 4: Thiết bị vào ra của hệ vi xử lý 4 1 3
2 Ghép nối bàn phím với hệ vi xử lý 1.25 0.25 1
5 Bài 5: Sơ lược về lịch sử và hướng phát triển của vi điều khiển 1 1
3 Lĩnh vực và ứng dụng 0.25 0.25
6 Bài 6: Cấu trúc họ vi điều khiển
5 Các thanh ghi chức năng đặc biệt 0.25 0.25
7 Bài 7: Phần mềm hợp ngữ 8 2 6
2 Cấu trúc chương trình dữ liệu 1 0.5 0.5
3 Tính biểu thức trong khi hợp dịch 1 0.5 0.5
4 Các điều khiển của ASSEMBLER 2 0.25 1.75
1 Các cách định địa chỉ 3.5 0.25 3.25
1.Thanh ghi SFR của timer 0.25 0.25
2 Các chế độ làm việc 0.25 0.25
3 Nguồn cung cấp xung cho Timer 0.25 0.25
4 Khởi động, dừng, điều khiển Tim- er 2 0.25 1.75
5 Khởi tạo và truy xuất thanh ghi
Timer - Đọc thời gian đang hoạt động
3 Khởi tạo và truy suất thanh ghi
4 Truyền thông đa xử lý 2.75 0.25 2.5
3 Thiết kế chương trình dùng ngắt 1.25 0.25 1
6 Đồ thị thời gian của ngắt 2.75 0.25 2.5
12 Bài 12: Lập trình và mô phỏng một số chương trình ứng dụng 18 1.5 15.5 1
1 Lập trình giao tiếp với 8 LED đơn 3 0.25 2.75
2 Lập trình giao tiếp với 2 LED 7 đoạn 3 0.25 2.75
3 Lập trình giao tiếp với ma trận phím bấm 3 0.25 2.75
4 Lập trình giao tiếp với LCD 3 0.25 2.75
5 Lập trình giao tiếp với động cơ 2.5 0.25 2.25
6 Lập trình giao tiếp điều khiển van từ, xi lanh 2.5 0.25 2.25
BÀI 1: TỔNG QUAN VỀ CÁC HỆ VI XỬ LÝ
Mã bài: MĐ21-01 Giới thiệu
Kỹ thuật vi xử lý hiện đang được giảng dạy phổ biến tại các trường Đại học và Cao đẳng trên toàn quốc Tuy nhiên, lĩnh vực này vẫn chưa được ứng dụng một cách triệt để trong các hệ thống điều khiển, đo lường và quản lý của các dây chuyền công nghiệp.
- Trình bày được một số hệ đếm, và các mã thường dùng trong hệ vi xử lý
- Tính toán, chuyển đổi được các phép toán nhị phân
- Trình bày được cách biểu diễn thông tin trong các hệ vi xử lý
- Rèn luyện tính tư duy, tác phong trong công nghiệp
1 Biểu diễn thông tin trong các hệ vi xử lý:
1.1 Mã hóa các thông tin không số
1.1.1 Mã hóa chữ và dữ liệu kiểu văn bản Đơn vị cơ sở của dữ liệu văn bản là chữ Chữ ở đây được hiểu theo nghĩa rộng, không chỉ là các chữ cái Latinh mà kể cả chữ số, các dấu chính tả, các dấu toán học, các kí hiệu để trình bày Mặt khác không phải dân tộc nào cũng dùng chữ Latinh nên đối với một số dân tộc có thể có những chữ riêng Chúng ta dùng thuật ngữ ký tự
(character) với ý nghĩa là một ký hiệu dùng trong văn bản
Khi sử dụng một vùng nhớ k bit để mã hóa một ký tự, chỉ có thể biểu diễn tối đa 2^k ký tự do chỉ có 2^k mã nhị phân khác nhau Điều này lý giải tại sao người Mỹ chỉ cần 7 bit để mã hóa các ký tự của họ, trong khi để bao gồm thêm các ký tự của Châu Âu, Hy Lạp hoặc Nhật Bản, cần phải sử dụng mã 16 bit.
Văn bản được định nghĩa là chuỗi ký tự, với nội dung như sách và bài thơ là những ví dụ cụ thể về thông tin văn bản Hiện nay, hầu hết các máy tính và môi trường lập trình đều sử dụng một byte để mã hóa mỗi ký tự.
Nguyên tắc mã hóa giá trị sai bằng bit 0 và giá trị đúng bằng bit 1 thường ít được sử dụng ở mức bit, vì cơ chế địa chỉ hóa thường tối thiểu ở mức byte Do đó, một byte vẫn được sử dụng để mã hóa các giá trị logic.
Dữ liệu loại logic chỉ có hai trạng thái đối lập: đúng hoặc sai, có hoặc không Các thông tin logic này được điều chỉnh bởi các phép toán so sánh và các phép toán logic như "và", "hoặc" và "không".
Nguyên tắc mã hóa giá trị logic sử dụng bit 0 để biểu thị giá trị sai và bit 1 để biểu thị giá trị đúng Tuy nhiên, trong thực tế, việc sử dụng bit ít phổ biến do cơ chế địa chỉ hóa thường diễn ra ở mức byte Do đó, một byte thường được dùng để mã hóa các giá trị logic.
Hình ảnh có thể được xử lý bằng máy tính, và khác với hình ảnh thông thường, chúng được mã hóa dưới dạng nhị phân Hai kiểu mã hóa ảnh phổ biến nhất là ảnh bit map, trong đó hình ảnh được thể hiện như một lưới điểm Mỗi điểm trong lưới sẽ nằm trong một hàng và một cột cụ thể, đồng thời màu sắc của điểm cũng được mã hóa.
1.1.4 Âm thanh Âm thanh cũng có thể được xử lý bằng máy tính Cũng có nhiều phương pháp mã hóa âm thanh Cách đơn giản nhất là mã hóa bằng cách xấp xỉ dao động sóng âm bằng một chuỗi các byte thể hiện biên độ dao dộng tương ứng theo từng khoảng thời gian bằng nhau Dĩ nhiên các đơn vị thời gian này cần phải đủ nhỏ để không làm nghèo âm thanh Đơn vị thời gian này gọi là chu kỳ lấy mẫu Hình vẽ dưới đây minh hoạ cách lưu trữ xấp xỉ sóng âm, theo đó sẽ lưu lại dãy các giá trị sau (xem hình 1.2)
Khi phát, mạch điện sẽ tái tạo sóng âm với sai lệch chấp nhận được Một phương pháp khác là phân tích dao động âm thanh thành các dao động điều hòa, bao gồm các sóng hình sin với tần số và biên độ khác nhau, chỉ giữ lại các đặc trưng về tần số và biên độ.
Có nhiều phương pháp mã hóa âm thanh dựa trên nguyên lý nén dữ liệu hiệu quả Số hóa âm thanh được thực hiện thông qua các thiết bị chuyên dụng Quá trình xử lý âm thanh trên máy tính bao gồm nhiều bước quan trọng.
Thu và mã hóa âm thanh
Biên tập (sửa chữa, ghép, cắt)
Phân tích đặc trưng để nhận dạng tiếng nói đã giúp nhiều máy tính có khả năng nghe và thực hiện các lệnh đơn giản Hiện nay, các điện thoại di động cũng đã trang bị công nghệ nhận dạng tiếng nói, nâng cao trải nghiệm người dùng.
Tổng hợp tiếng nói Ở mức độ đơn giản máy tính có thể đọc văn bản thành lời
Hình 1.2 Số hóa âm thanh
1.2 Mã hóa các thông tin số:
Nếu dùng 1 byte (8 bit) để biểu diễn các số nguyên không dấu (số tự nhiên) thì ta có thể biểu diễn được 2n = 28 = 256 số từ 0 đến 255
Khi sử dụng 1 byte để biểu diễn các số nguyên có dấu, ta có thể biểu diễn 256 số từ -128 đến 127 Điều này xảy ra vì 1 bit được dành để biểu diễn dấu, với bit MSB (Most Significant Bit) là 1 cho số âm và 0 cho số dương Số dương lớn nhất là 127, tương ứng với mã nhị phân 0111 1111 Đối với số âm, phương pháp phổ biến nhất là sử dụng kiểu số bù hai, trong đó số âm nhỏ nhất được biểu diễn là 1000 0000, tương đương với -128.
1.3 Biểu diễn dữ liệu số trong máy tính:
Để đạt hiệu quả cao trong việc xử lý, lưu trữ và truyền thông tin, cần tổ chức và biểu diễn thông tin trong máy tính một cách hợp lý Dữ liệu, được hiểu là hình thức biểu diễn thông tin, chính là các thông tin đã được mã hóa dưới dạng nhị phân trong máy tính.
Dữ liệu - thông tin được máy tính xử lý có thể có các dạng khác nhau
Hình 1.3 Phân loại các dạng dữ liệu cơ bản
Máy tính có khả năng thực hiện các phép tính trên số liệu, xử lý thông tin chữ viết và thông tin logic, cũng như xử lý các dạng thông tin đa phương tiện như âm thanh và hình ảnh Bên cạnh đó, máy tính còn có thể quản lý và xử lý tri thức một cách hiệu quả.
CÁC ĐƠN VỊ VI XỬ LÝ TRUNG TÂM
Trung tâm vi xử lý P 8085
Khỏc với cỏc loại àP xuất hiện trước đú như àP8008 hay àP8080, àP8085 cú những bước phát triển có tính đột phá như sau:
Cơ cấu ngắt đa mức được hình thành qua khối điều khiển ngắt, giúp tạo ra vector ngắt mà không bị chèn nhau do lệnh RET N trên BUS dữ liệu Tín hiệu nhận biết yêu cầu ngắt INTA được sinh ra từ khối điều khiển ngắt, không giống như mạch phụ 8228 ở vi xử lý P8080.
Các tín hiệu điều khiển ghi (WR) và đọc (RD) được phát sinh từ bộ định thời và điều khiển chức năng trong CPU Ngoài ra, các tín hiệu INTA, WR và RD cũng được tạo ra ngay trong CPU mà không cần sử dụng mạch phụ trợ bên ngoài.
- àP8085 cú mạch tạo xung đồng hồ được tớch hợp ngay trong CPU
Khối chức năng điều khiển vào/ra nối tiếp tích hợp cho phép vi điều khiển P8085 thực hiện các lệnh vào/ra dữ liệu nối tiếp mà không cần đến vi mạch chuyên dụng.
Thanh ghi đệm địa chỉ A5-A8 và AD7-AD0 của CPU àP8085 cho phép xử lý cả dữ liệu và địa chỉ, từ đó tăng cường khả năng hoạt động của vi xử lý Việc thiết kế này không chỉ tối ưu hóa hiệu suất mà còn mở rộng thêm các chân chức năng, góp phần nâng cao sức mạnh tổng thể của CPU.
- Đặc tính của vi xử lý 8085:
+ Dòng điện cực đại: Imax = 170 mA
+ Tần số xung clock chuẩn: 6,134 Mhz
+ Độ dài dữ liệu là 8 bit
+ Khả năng truy xuất ô nhớ trực tiếp là 64Kb
+ Vi xử lý có thể tính số nhị phân, thập phân
- Vi xử lý có 8 đường dữ liệu và 16 đường địa chỉ
- Các đường điều khiển: RD\, WR\, IO/M\, Clock Out, Reset Out và 4 ngắt
1.1 Cỏc nhúm tớn hiệu trong à8085:
Nhóm tín hiệu ra A8 – A15 bao gồm 8 bit cao của địa chỉ, được kết nối với bên ngoài thông qua mạch 3 trạng thái Trong trường hợp tín hiệu HOLD hoặc HALT tích cực, các phần tử 3 trạng thái sẽ chuyển sang trạng thái high-z.
AD0 – AD7 Nhóm tín hiệu dồn kênh 3 trạng thái Ở giai đoạn đầu của chu kỳ máy, T1 của M1, sẽ là byte thấp của 16 bộ địa chỉ
ALE (Address Enable) là tín hiệu ra qua mạch 3 trạng thái, được sử dụng để chốt byte thấp của tín hiệu địa chỉ (A0 - A7) Tín hiệu này được tạo ra trong giai đoạn đầu tiên của chu kỳ máy, T1 của M1, và cũng được dùng để chốt các tín hiệu trạng thái S0 và S1 khi cần thiết.
S0 và S1 (Data BUS Status) Là các tín hiệu chỉ trạng thái của các chân thuộc
BUS dữ liệu trong mỗi chu kỳ máy Tổ hợp của hai tín hiệu này cũng cho biết trạng thái của CPU
S0 S1 Hoạt động của BUS dữ liệu
0 1 CPU đang thực hiện thao tác WRITE
1 0 CPU đang thực hiện thao tác READ
1 1 CPU đang thực hiện thao tác nhận lệnh Instruction fetch
Chân ra RD (Read) có 3 trạng thái và thuộc nhóm tín hiệu điều khiển Tín hiệu này hoạt động tích cực khi CPU đọc dữ liệu từ bộ nhớ hoặc thiết bị ngoại vi Trong chế độ HALT hoặc DMA, chân ra này sẽ ở trạng thái high-z.
Chân ra WR (Write) có 3 trạng thái và thuộc nhóm tín hiệu điều khiển Tín hiệu này hoạt động tích cực khi CPU ghi dữ liệu vào bộ nhớ hoặc gửi dữ liệu ra thiết bị ngoại vi Trong các chế độ HALT hoặc DMA, chân ra này sẽ ở trạng thái high-z.
Ngõ ra IO/M cho biết trạng thái logic của CPU khi tương tác với thiết bị ngoại vi hoặc bộ nhớ Nếu logic là "1", CPU đang truy cập thiết bị vào/ra; nếu là "0", CPU đang truy cập bộ nhớ Ngõ ra này kết hợp với các tín hiệu RD và WR để tạo ra các tín hiệu I/OR, I/OW RD, MEMR và MEMW, đặc biệt trong trường hợp sử dụng địa chỉ tách biệt cho thiết bị vào/ra Là một phần của nhóm tín hiệu điều khiển, IO/M cũng hoạt động như một Ngõ ra 3 trạng thái.
Interrupts àP8085 cú ngắt đa mức Cú 5 chõn ngắt tất cả: (INTR, RST5.5
RST6.5, RST7.5 và TRAP) Ngoài chân ngắt không che được là TRAP, các chân khác đều có thể che hoặc không che nhờ lập trình phần mềm
INTR: Chân nhận yêu cầu ngắt từ bên ngoài, được đáp ứng theo nguyên tắc polling hoặc vectoring thông qua lệnh RST
Yêu cầu ngắt RST có ba ngõ vào với các mức ưu tiên khác nhau: RST7.5, RST6.5 và RST5.5 Khi các yêu cầu ngắt này được kích hoạt, CPU sẽ tự động chuyển đến các vector ngắt tương ứng.
RST5.5 là mức ưu tiên thấp nhất, phản ứng theo mức điện áp trên chân yêu cầu ngắt, với địa chỉ vector ngắt ở ô nhớ 2CH Trong khi đó, RST6.5 là ngắt ưu tiên thấp thứ hai, cũng phản ứng theo mức điện áp trên chân yêu cầu ngắt, và địa chỉ vector ngắt của nó nằm ở ô nhớ 34H.
• RST7.5 Mức ưu tiên cao nhất Phản ứng theo sườn lên của xung yêu cầu ngắt
Sườn lên của xung tác động lên flip-flop, giúp mạch giữ yêu cầu ngắt cho đến khi được xóa bởi tín hiệu Acknowledge Địa chỉ vector ngắt được lưu trữ tại ô nhớ 3CH.
TRAP: Là chân nhận yêu cầu ngắt không che được (có mức ưu tiên cao nhất) Địa chỉ của vector ngắt này ở ô nhớ 24H
INTA Tín hiệu ra nhận biết yêu cầu ngắt tại chân INTR Các yêu cầu ngắt
RST5.5, RST6.5, RST7.5 và TRAP không tác động đến INTA
HOLD trạng thái logic "1" ở chân này là yêu cầu của thao tác DMA.Các ngõ ra RD, WR, IO/M và ALE sẽ được đưa về trạng thái high-z
HLDA Tín hiệu nhận biết yêu cầu HOLD
IN RESET Logic thấp "0" ở Ngõ vào của chân này yêu cầu tái khởi động hệ
Khi tín hiệu RESET IN tích cực được kích hoạt, giá trị của thanh đếm chương trình PC sẽ được khôi phục về 0000H, đồng thời các địa chỉ ngắt và tín hiệu HLDA cũng sẽ được thiết lập lại về giá trị mặc định.
RESET OUT Ngõ ra nhận biết hệ Vi xử lý được tái khởi động Dùng tín hiệu này để tái khởi động toàn bộ hệ thống
Logic "1" ở Ngõ vào thông báo trạng thái sẵn sàng cung cấp hoặc nhận dữ liệu từ CPU của các thiết bị ngoại vi SID (Serial Input Data) là cổng vào dữ liệu nối tiếp của hệ Vi xử lý, nơi bit được đọc vào CPU qua lệnh RIM và đưa vào bit cao của Acc (MSB).
SOD (Serial Output Data) Bit cao (MSB) của Acc được truyền ra ngoài chân này khi sử dựng lệnh SIM
X1, X2 Chân nối thạch anh hoặc một mạch dao động để tạo xung nhịp cho
CPU sử dụng thạch anh với tần số dao động từ 0.5 đến 3MHz CLK là ngõ ra của xung nhịp, cung cấp xung nhịp cho các thành phần chức năng khác trong hệ vi xử lý.
Các trung tâm vi xử lý họ 80x86
2.1 Mô tả chân của P 8086 và các tín hiệu: àP8086 được chế tạo theo cụng nghệ HMOS, đúng vỏ CerDIP 40 chõn Là loại Vi xử lý cú khả năng xử lý trực tiếp dữ liệu 8 hoặc 16 bit Về tập 1ệnh, àP8086 hoàn toàn tương thích với tập lệnh của IAPX 86/10 và về phần cứng, hoàn toàn tương thớch với cỏc mạch ngoại vi của cỏc trung tõm 8080/8085 của Intel àP8086 cú thể hoạt động ở một trong hai chế độ:
Chế độ MIN: CPU tự tạo ra các tín hiệu điều khiển hoạt động của BUS (các chân từ 24 đến 34)
Hình 2.5 Sơ đồ chân trung tâm Vi xử lý 8086
Chế độ MAX yêu cầu CPU chỉ phát tín hiệu trạng thái, do đó cần thêm một chip điều khiển BUS (BUS controller 8288) để chuyển đổi các tín hiệu này thành tín hiệu điều khiển BUS tương thích với cấu trúc MULTIBUSTM, giúp cải thiện sự ổn định trong quá trình đọc số liệu.
AD15 – AD0: BUS dồn kênh dữ liệu và địa chỉ 16 bit
A19 - A16/S6 - S3: 4 bits địa chỉ cao hoặc 4 tín hiệu trạng thái hoạt động hiện tại của CPU
S4 S3 Thanh ghi được truy xuất
S5 chỉ trạng thái cờ ngắt
+ BHE/S7: Tín hiệu này kết hợp với chân địa chỉ A0 cho chỉ thị các trạng thái sau:
0 0 Một từ đã được truyền qua D5 – D0
0 1 Một Byte trên D15 - D8 được truy xuất tới một địa chỉ Byte lẻ
1 0 Một Byte trên D7 – D0 được truy xuất tới một địa chỉ Byte chẵn
RD : Nếu bằng "l" đang đọc bộ nhớ (hoặc thiết bị vào/ra) Nếu bằng "0" đang ghi ra bộ nhớ (hoặc thiết bị vào/ra)
Khi bộ nhớ hoặc thiết bị vào/ra hoàn tất việc chuyển dữ liệu, chúng cần phát tín hiệu READY ở mức "1" tới chân CPU Chỉ khi nhận được tín hiệu này, CPU mới tiến hành đọc dữ liệu vào hoặc xuất dữ liệu ra.
CPU kiểm tra trạng thái chân ngắt sau mỗi lệnh để xác định có yêu cầu ngắt từ phần cứng hay không Nếu trạng thái là "1", CPU sẽ chuyển sang phục vụ ngắt Thao tác kiểm tra này có thể được thực hiện thông qua việc sử dụng mặt nạ che ngắt.
Trong lệnh WAIT, lối vào của CPU luôn được kiểm tra Nếu giá trị bằng "0", CPU sẽ tiếp tục thực hiện chương trình; ngược lại, nếu giá trị bằng "1", CPU sẽ chạy các chu trình giả cho đến khi giá trị TEST trở về "0".
NMI: Chân ngắt theo sườn lên của xung, không che được
RESET: Chức năng nhận tín hiệu để tái khởi động hệ thống Nếu có sự thay đổi từ "0" lên "1" và duy trì tối thiểu trong 4 nhịp đồng hồ, hệ thống sẽ tự động khởi động lại.
CLK: Lối vào của xung nhịp đồng hồ
MN/MX: Khi được nối với Vcc, àP8086 hoạt động ở chế độ MIN, nếu nối với GND, hoạt động ở chế độ MAX
Ở chế độ MAX, chip điều khiển BUS sử dụng ba tín hiệu để phát ra các tín hiệu điều khiển truy xuất bộ nhớ và thiết bị vào ra Tổ hợp tín hiệu này đóng vai trò quan trọng trong việc quản lý và điều phối các hoạt động của hệ thống.
0 0 0 yêu cầu ngắt cứng qua chân 1NTR được chấp nhận
0 0 1 đọc thiết bị vào/ra
0 1 0 Ghi thiết bị vào/ra
1 0 0 nạp mã chương trình vào hàng nhận lệnh
RQ / GT0 và RQ / GT1 là tín hiệu hỗ trợ chuyển mạch BUS cục bộ giữa các đơn vị làm chủ BUS BUS cục bộ là hệ thống kết nối giữa các đơn vị xử lý mà không liên quan đến các thiết bị ngoại vi Đơn vị làm chủ BUS có thể là chip àP8086 hoặc một chip điều khiển khác, chẳng hạn như DMAC, đang nắm quyền điều khiển BUS cục bộ.
LOCK: nếu bằng "0" đơn vị làm chủ BUS không nhượng quyền làm chủ BUS cục bộ
QS1, QS0 chỉ thị trạng thái của hàng nhận lệnh trước PQ
0 1 byte 1 của mã toán trong PQ được xử lý
1 0 hàng đợi lệnh được xóa
1 1 byte 2 của mã toán trong PQ được xử lý
2.2 Cấu trúc trung tâm Vi xử lý họ 80x86:
Các vi xử lý 80x86 được phát triển dựa trên công nghệ VLSI, với các thành phần chính là transistor MOS tiêu thụ năng lượng rất thấp Sơ đồ khối chức năng của vi xử lý 8086 bao gồm hai phần chính: đơn vị ghép nối BUS (BIU) và đơn vị thực hiện lệnh (EU) Tất cả các thanh ghi và đường truyền dữ liệu trong EU đều có độ dài 16 bits BIU đảm nhiệm mọi nhiệm vụ liên quan đến BUS cho EU, bao gồm thiết lập kết nối với BUS dữ liệu, BUS địa chỉ và BUS điều khiển.
Dữ liệu giữa CPU và bộ nhớ được trao đổi khi EU yêu cầu, nhưng không được truyền trực tiếp đến EU Thay vào đó, dữ liệu đi qua một vùng nhớ RAM nhỏ (6 bytes) gọi là hàng nhận lệnh trước (Instruction Stream Byte Queue - Prefetch Queue) trước khi được gửi đến hệ thống điều khiển EU (Execution Unit Control System).
Khi EU thực hiện lệnh, BIU đã tìm và lấy lệnh tiếp theo để đặt sẵn vào PQ, tạo ra cơ chế đường ống (pipeline) giúp tăng tốc độ cho CPU.
Kỹ thuật đường ống sử dụng vùng nhớ RAM nhanh giúp tăng tốc độ bộ vi xử lý bằng cách truy xuất lệnh từ bộ nhớ chương trình, thay vì phụ thuộc vào kết nối giữa CPU và bộ nhớ Đặc biệt, bộ xử lý Pentium có hai đường ống riêng biệt: một cho lệnh và một cho dữ liệu.
Bảng 2.1:Thông số kỹ thuật cơ bản của các trung tâm Vi xử lý họ 80
Hỡnh 2.6 Cấu trỳc cỏc khối chức năng àP8086
Loại àp Độ dài thanh ghi Độ rộng BUS địa chỉ Độ rộng BUS dữ liệu
8088 16 bits 20 bits 8 bits 1 MByte 10 MHZ
8086 16 bits 20 bits 16 bits 1 MByte 10 MHZ
80188 16 bits 20 bits 8 bits 1 MByte 10 MHZ
80186 16 bits 20 bits 16 bits 1 MByte 10 MHZ
80286 16 bits 24 bits 16 bits 16Mbytes 16 MHZ
80386SX 32 bits 24 bits 16 bits 16Mbytes 20MHZ
80386DX 32 bits 32 bits 32 bits 4Gbytes 40 MHZ i486 32 bits 32 bits 32 bits 4Gbytes 66 MHZ i486SX 32 bits 32 bits 32 bits 4Gbytes 25 MHZ
32 bits 32 bits 64 bits 4Gbytes 66 MHZ
2.3 Hệ thống thanh ghi trong cỏc àP80x86:
Các thanh ghi trong CPU được xem như một bộ nhớ nhanh, lưu trữ dữ liệu và kết quả tạm thời của quá trình tính toán Trong họ P80x86, các thanh ghi có độ dài khác nhau, với 16 bits cho các trung tâm 8088/86 và 80188/86.
80286, 32 bits với các trung tâm 80386/486 trở đi và được mô tả trên hình 2.6
EU của àP8086 cú 8 thanh ghi đa năng với tờn gọi là AH, AL, BH, BL, CH,
CL, DH, và DL là những thanh ghi có khả năng lưu trữ dữ liệu nhị phân 8 bits Ngoài việc sử dụng riêng lẻ, chúng cũng có thể kết hợp thành từng cặp thanh ghi, tạo thành các nhóm hiệu quả trong việc xử lý dữ liệu.
AX (AH-AL), BX (BH-BL), CX (CH-CL), và DX (DH-DL) để lưu giữ các dữ liệu nhị phân 16 bits
2.4 Các chế độ làm việc MIN/MAX:
Bộ vi xử lý àP8086 hoạt động trong hai chế độ: chế độ MIN và chế độ MAX, với chân số 33 đóng vai trò là chân bẫy để xác định chế độ làm việc Do giới hạn của hệ thống 40 chân, một số chân sẽ đảm nhiệm các chức năng khác tùy thuộc vào cách nối chân MN/MX Khi chân MN/MX được nối với GND (mức điện 0V), àP8086 sẽ chuyển sang chế độ MAX, và mạch điều khiển BUS 8288 sẽ giải mã tín hiệu trạng thái S0, S1, S2 để tạo ra các tín hiệu điều khiển phù hợp với cấu trúc MULTIBUSTM Ngược lại, khi chân MN/MX được nối với nguồn điện 5V (mức Vcc), àP8086 sẽ tự động tạo ra các tín hiệu điều khiển BUS trên các chân từ 24 đến 31.
2.5 Phương thức quản lý bộ nhớ, các mode địa chỉ:
2.5.1 Phương thức quản lý bộ nhớ:
BỘ NHỚ TRONG CỦA HỆ VI XỬ LÝ
Tổ chức bộ nhớ cho hệ vi xử lý
2.1 Tổ chức bộ nhớ vật lý
Tổ chức bộ nhớ trong hệ Vi xử lý không chỉ phụ thuộc vào loại Vi xử lý mà còn vào cách bố trí bên trong hệ thống Để hiểu rõ vấn đề tổ chức vật lý của bộ nhớ, trước tiên cần làm quen với các khái niệm chip nhớ và từ nhớ Sau đó, chúng ta sẽ mở rộng khái niệm tổ chức bộ nhớ từ góc độ lập trình, tức là tổ chức logic.
Chip nhớ được sản xuất với nhiều kích cỡ khác nhau tùy thuộc vào công nghệ chế tạo Đây là một vi mạch cụ thể, bao gồm các chân như lối vào BUS địa chỉ, lối dữ liệu và các chân điều khiển chọn chip từ A0 đến A9 cho địa chỉ, cùng với D1 đến D4 cho dữ liệu.
CS Chân chọn chip WE Điều khiển Ghi/đọc
Vcc Chân nguồn nuôi +5V GND Chân nối đất và các chân nguồn
Số lượng chân địa chỉ và chân dữ liệu của các chip nhớ khác nhau tùy thuộc vào độ dài từ nhớ và dung lượng của chip Độ dài từ nhớ có thể là 1 bit, 4 bits hoặc 8 bits, trong khi số chân địa chỉ thường bắt đầu từ 10 trở lên Để tạo thành 1 byte từ chip có độ dài từ nhớ 1 bit, cần ghép song song 8 chip, và để tạo một từ (word - 2 bytes), cần ghép song song 16 chip.
2.2 Thiết kế vỉ nhớ cho hệ vi xử lý
Thiết kế vỉ nhớ đóng vai trò quan trọng trong việc phát triển hệ Vi xử lý Các loại vỉ nhớ thường được sử dụng bao gồm EPROM và nhiều loại RAM, được tạo ra từ các chip nhớ phổ biến trên thị trường Khi lựa chọn chip nhớ, các thông số kỹ thuật chính là yếu tố quyết định để đảm bảo hiệu suất và khả năng tương thích.
Dung lượng nhớ của chip nhớ tính theo đơn vị Kbyte Độ dài từ nhớ của chip nhớ tính theo số bits
Các thông số kỹ thuật như thời gian truy xuất và công suất tiêu tán của chip không ảnh hưởng đáng kể đến quá trình thiết kế và xây dựng bộ nhớ.
Các thông số được cho trước trong việc thiết kế một vỉ nhớ bao gồm:
Loại chip nhớ Ví dụ dùng EPROM 2764(8kx8) hay RAM TMS 2064(8kx8)
Dung lượng của vi nhớ, như 64KB hay 128KB, là yếu tố quan trọng cần xem xét Bên cạnh đó, địa chỉ đầu của vùng nhớ, chẳng hạn như A0000H, cũng đóng vai trò quan trọng trong việc xác định vị trí lưu trữ dữ liệu.
Ví dụ minh họa: Dùng EPROM 2764 (8kx8bit) xây dựng vỉ nhớ có dung lượng 32KB, địa chỉ đầu là 22000H
Giải: Dựa trên yêu cầu của đề ra, phải thực hiện các bước sau:
1 Xác định số chip nhớ cần thiết để tạo từ nhớ cơ bản (độ dài 8 bits), có thể tính theo công thức: n 8
Trong đó: n là số chip cần để tạo được từ nhớ cơ bản k là độ dài từ nhớ của chip nhớ
Tín hiệu chọn vỏ CS của các chip được kết nối chung, tạo thành một chip liên thông Các bit dữ liệu được định vị theo thứ tự từ D7 đến D0, tương ứng với các bit trong BUS dữ liệu.
2 Xác định số chip nhớ, hoặc số chip liên thông để tạo được dung lượng nhớ theo yêu cầu Trong trường hợp cụ thể của đề ra, cần 4 chip để tạo được dung lượng nhớ 32KB Tính theo công thức:
Trong đó: Q là dung lượng của vỉ nhớ
D là dung lượng của chip nhớ hoặc dung lượng của chip liên thông
M là số chip nhớ hoặc số chip liên thông cần thiết
3 Xác định số dây địa chỉ cơ sở (tức là số dây địa chỉ thấp được nối trực tiếp vào chip nhớ hoặc chip liên thông): Số dây địa chỉ m phụ thuộc vào dung lượng nhớ của chip nhớ hoặc chip liên thông theo biểu thức sau:
2 m = D trong đó: D là dung lượng của chip nhớ m là số dây địa chỉ cơ sở
4 Từ số chip hoặc số chip liên thông, xác định số dây địa chỉ cần thiết để tạo các dây chọn chip riêng biệt Tính theo công thức:
Để xác định các tín hiệu chọn chip cho các chip nhớ hoặc chip liên thông, số dây địa chỉ cần thiết được tính bằng công thức 2^i = M, trong đó i là số dây địa chỉ và M là tổng số chip hoặc số lượng chip liên thông.
Xây dựng mạch tổ hợp tạo các tín hiệu chọn chip CSi
5 Các dây địa chỉ còn lại được sử dụng để tạo tín hiệu xác định vùng nhớ của vỉ nhớ trong không gian nhớ (được gán cho vỉ nhớ theo địa chỉ đầu của vỉ nhớ theo yêu cầu)
Bài 1 Phần tử nhớ là gì? Cho ví dụ minh họa
Bài 2 Thế nào là bộ nhớ ROM, RAM?
Bài 3 Vẽ cấu trúc của Chíp DRAM và nêu chức năng của các tín hiệu điều khiển
YÊU CẦU ĐÁNH GIÁ KẾT QUẢ HỌC TẬP BÀI 3 :
+ Về kiến thức: trình bày tổ chức bộ nhớ
+ Về kỹ năng: xác định được dung lượng nhớ của Vi xử lý
+ Năng lực tự chủ và trách nhiệm: Rèn luyện tính tỷ mỉ, chính xác, an toàn và vệ sinh công nghiệp
+ Về kiến thức: Được đánh giá bằng phương pháp viết, trắc nghiệm
+ Về kỹ năng: Được đánh giá bằng phương pháp thực hành
+ Năng lực tự chủ và trách nhiệm: Rèn luyện tính tỷ mỉ, chính xác, an toàn và vệ sinh công nghiệp
THIẾT BỊ VÀO RA CỦA HỆ VI XỬ LÝ
Màn hình (Monitor)
3.1 Màn hình ống tia âm cực CRT (Cathode Ray Tube):
Màn hình CRT là một thiết bị hiển thị sử dụng ống thủy tinh chân không, bao gồm các bộ phận như cathode, ống phóng tia điện tử, cuộn lái tia và màn hình phát quang Cathode, được nối với điện áp âm, phát ra điện tử tự do khi được đốt nóng Màn hình được phủ lớp chất liệu phát quang, hoạt động như anode khi nối với điện áp dương Dưới tác dụng của điện trường, điện tử từ cathode được hội tụ thành chùm tia và được cuộn lái tia điều khiển di chuyển trên màn hình Khi chùm tia va chạm với màn hình, nó tạo ra điểm phát sáng, với cường độ phụ thuộc vào cường độ chùm tia và chất liệu phát quang Điểm ảnh được hình thành khi cường độ chùm tia tăng lên và không xuất hiện khi chùm tia tắt Các điểm ảnh được tạo ra theo từng dòng từ trên xuống dưới, và để duy trì hình ảnh, các điểm ảnh cần được làm tươi theo chu kỳ xác định, bắt đầu từ dòng đầu tiên và lặp lại cho đến dòng cuối cùng.
3.2 Ghép nối màn hình với hệ Vi xử lý:
Các thiết bị hiển thị được sử dụng ở máy vi tính PC đều là loại ánh xạ bộ nhớ
Bộ nhớ hiển thị là nơi mà cả đơn vị xử lý trung tâm và thiết bị điều khiển màn hình cùng truy cập Thông tin cần hiển thị được lưu trữ trong bộ nhớ này, và thiết bị điều khiển màn hình CRTC liên tục đọc từ bộ nhớ hiển thị để truyền tải thông tin lên màn hình.
Mỗi ký tự trên màn hình tương ứng với một ô nhớ hai byte trong bộ nhớ hiển thị, trong đó byte đầu chứa mã ASCII và byte thứ hai lưu trữ thuộc tính như màu nền, màu chữ và trạng thái nhấp nháy Vị trí của mã ký tự trong bộ nhớ quyết định vị trí hiển thị của ký tự trên màn hình, với mã ký tự đầu tiên được ánh xạ đến ký tự đầu tiên và tiếp tục như vậy cho các ký tự tiếp theo.
Phương pháp ánh xạ bộ nhớ giúp chương trình máy tính dễ dàng thay đổi nội dung hiển thị bằng cách điều chỉnh nội dung trong bộ nhớ hiển thị.
Mỗi ký tự trên màn hình được hiển thị dưới dạng ma trận 8x8 điểm ảnh sáng/tối Tuy nhiên, phương pháp này không hoàn toàn hiệu quả cho việc hiển thị các đối tượng có hình dạng không bình thường và chuyển động nhanh, do thời gian thực bị chậm vì cần thao tác nhiều điểm ảnh để di chuyển đối tượng.
3.3 Bộ điều khiển màn hình CRTC:
Thiết bị giao diện màn hình, hay còn gọi là bộ điều khiển màn hình CRTC, có nhiệm vụ chuyển mã ký tự từ bộ nhớ hiển thị thành các ký tự hiển thị trên màn hình Trong chế độ văn bản, các mẫu ký tự chỉ được hiển thị tại các vị trí cố định, với cấu trúc 25 hàng và 80 cột.
Sơ đồ nguyên lý của thiết bị giao diện màn hình ở chế độ văn bản như hình 4.4
Hình 4.4 Sơ đồ khối điều khiển hiển thị CRTC
Mỗi ký tự trên màn hình bao gồm nhiều hàng điểm ảnh, và CRTC có nhiệm vụ chuyển đổi mã ASCII trong bộ nhớ hiển thị thành chuỗi mẫu điểm ảnh, đưa chúng lên từng dòng màn hình Quá trình này được thực hiện thông qua bộ ROM tạo ký tự, chứa các hộp mẫu ký tự với kích thước 8 byte, cung cấp thông tin về ma trận điểm ảnh của mỗi ký tự.
Để hiển thị 256 ký tự ASCII, cần một ROM dung lượng 2kbyte, đủ để chứa 256 hộp mẫu ký tự, mỗi hộp chiếm 8 ô nhớ liền nhau Các hộp mẫu ký tự trong ROM được định vị bằng địa chỉ 11 bit, với 8 bit địa chỉ cao xác định vị trí hộp trong ROM và 3 bit địa chỉ thấp xác định vị trí từng byte mẫu điểm ảnh trong hộp Các mẫu ký tự được sắp xếp theo thứ tự của bảng mã ASCII.
Nguyên lý hoạt động của thiết bị giao diện màn hình trong chế độ văn bản liên quan đến việc hiển thị các ký tự tại vị trí cụ thể Ví dụ, để hiển thị hai ký tự A và B tại hàng 0, cột 0 và hàng 0, cột 1, mã ASCII của chúng được lưu trữ tại các vị trí tương ứng trong bộ nhớ hiển thị.
CRTC gửi địa chỉ hàng và cột màn hình cho bộ nhớ hiển thị (hàng=0, cột=0)
Bộ nhớ hiển thị truyền mã ASCII của ký tự A đến ROM, trong đó mã ASCII này chứa thông tin về địa chỉ của hộp mẫu ký tự trong ROM (8 bit địa chỉ cao) Đồng thời, CRTC cũng gửi địa chỉ của dòng mẫu điểm ảnh (dòng mẫu điểm 0) đến ROM.
Hai địa chỉ 3 bit kết hợp tạo thành địa chỉ 11 bit, cho phép truy cập vào dòng mẫu điểm ảnh đầu tiên của ký tự A trong ROM Dữ liệu này sau đó được xuất ra thanh ghi dịch ảnh, từ đó từng bit mẫu ảnh được đưa ra màn hình theo thứ tự.
Khi tất cả các bit mẫu ảnh từ thanh ghi dịch được hiển thị, CRTC tiếp tục gửi địa chỉ hàng-cột cho bộ nhớ hiển thị và địa chỉ dòng mẫu điểm ảnh cho ROM Bộ nhớ hiển thị sẽ cung cấp mã ASCII của ký tự, ví dụ như ký tự B, và dòng mẫu điểm ảnh đầu tiên của ký tự này được xuất ra thanh ghi dịch ảnh Quá trình này lặp lại cho tất cả các ký tự trên cùng một hàng màn hình, cho đến khi ký tự cuối cùng được hiển thị.
CRTC tiếp tục gửi địa chỉ hàng-cột (hàng=0, cột=0) đến bộ nhớ hiển thị, trong khi địa chỉ dòng mẫu điểm ảnh đã chuyển thành 1 (dòng mẫu điểm 1) cho ROM Bộ nhớ hiển thị truyền mã ASCII của ký tự A đến ROM, và ROM sẽ xuất ra dòng mẫu điểm ảnh 1 tương ứng với ký tự này.
A Dòng 1 của ký tự B được xuất ra theo cách tương tự Các dòng điểm ảnh tiếp theo
Các ký tự sẽ được hiển thị lần lượt trên màn hình cho đến khi tất cả các dòng điểm ảnh của hàng văn bản đầu tiên (hàng 0) được hoàn tất.
CRTC (Bộ điều khiển đồng bộ hình ảnh) không chỉ hiển thị văn bản mà còn thực hiện nhiều chức năng phức tạp khác Nó cần có khả năng hiển thị đồ họa và theo dõi thông tin về thuộc tính của ký tự Ngoài ra, CRTC còn phải tạo ra điểm nháy và hai tín hiệu đồng bộ cho hình ảnh ngang và dọc, đồng thời làm tươi màn hình với tần số tối thiểu là 50 Hz.
YÊU CẦU ĐÁNH GIÁ KẾT QUẢ HỌC TẬP BÀI 4:
+ Về kiến thức: trình bày cấu tạo của bàn phím hex và màn hình
+ Về kỹ năng: Lập trình truyền dữ liệu từ bàn phím đến Vi xử lý
+ Năng lực tự chủ và trách nhiệm: Rèn luyện tính tỷ mỉ, chính xác, an toàn và vệ sinh công nghiệp
+ Về kiến thức: Được đánh giá bằng phương pháp viết, trắc nghiệm
+ Về kỹ năng: Được đánh giá bằng phương pháp thực hành
+ Năng lực tự chủ và trách nhiệm: Rèn luyện tính tỷ mỉ, chính xác, an toàn và vệ sinh công nghiệp
BÀI 5: SƠ LƯỢC VỀ LỊCH SỬ VÀ HƯỚNG PHÁT TRIỂN CỦA
Mã bài: MĐ21-05 Giới thiệu:
Vi điều khiển (microcontroller)
2.1.1 Cấu tạo vi điều khiển
Vi điều khiển là một máy tính tích hợp trên một chip, chủ yếu dùng để điều khiển thiết bị điện tử Nó bao gồm vi xử lý hiệu suất cao với chi phí thấp, kết hợp với các thiết bị ngoại vi như bộ nhớ, mô đun vào/ra, và các mô đun chuyển đổi tín hiệu số và tương tự.
Vi điều khiển là thành phần quan trọng trong việc xây dựng hệ thống nhúng và thường được sử dụng rộng rãi trong các thiết bị điện tử như máy giặt, lò vi sóng, điện thoại và dây truyền tự động.
Hầu hết các vi điều khiển hiện nay sử dụng cấu trúc Harvard, trong đó bộ nhớ chương trình và bộ nhớ dữ liệu được phân tách rõ ràng.
Vi điều khiển bao gồm các thành phần chính như CPU, bộ nhớ chương trình (thường là ROM hoặc Flash), bộ nhớ dữ liệu (RAM), các bộ định thời và cổng vào/ra để giao tiếp với thiết bị bên ngoài, tất cả được tích hợp trên một vi mạch.
Các loại vi điều khiển trên thị trường hiện nay:
- VDK ATMEL: 89Cxx, AT89Cxx51
2.1.2 Nguyên lý hoạt động của Vi điều khiển
Mặc dù có nhiều họ vi điều khiển và chương trình điều khiển khác nhau, nhưng chúng vẫn chia sẻ những điểm chung cơ bản Hiểu rõ một họ vi điều khiển sẽ giúp việc tìm hiểu các họ khác trở nên dễ dàng hơn Một kịch bản chung cho hoạt động của vi điều khiển có thể được mô tả như sau:
Khi không có nguồn điện, vi điều khiển chỉ là một chip với chương trình đã được nạp sẵn, không thực hiện bất kỳ hoạt động nào.
Khi nguồn điện được cung cấp, mọi hoạt động diễn ra nhanh chóng Đơn vị điều khiển logic chịu trách nhiệm quản lý tất cả các hoạt động, khóa mọi mạch khác ngoại trừ mạch giao động thạch anh Chỉ sau vài mili giây, mọi thứ đã sẵn sàng để hoạt động.
Khi điện áp nguồn đạt giá trị tối đa và tần số dao động ổn định, các bit trong các thanh ghi SFR phản ánh trạng thái của tất cả các mạch trong vi điều khiển Vi điều khiển hoạt động theo chu kỳ của chuỗi xung chính, đảm bảo hiệu suất tối ưu cho các ứng dụng điện tử.
Thanh ghi bộ đếm chương trình (Program Counter) được đặt về 0, và lệnh từ địa chỉ này sẽ được chuyển đến bộ giải mã lệnh để thực hiện ngay lập tức.
-Giá trị trong thanh ghi PC được tăng lên 1 và toàn bộ quá trình được lặp lại vài…triệu lần trong một giây
2.2.Các kiểu cấu trúc bộ nhớ
- Memory (bộ nhớ): là ROM/RAM lưu trữ chương trình hay các kết quả trung gian
Bộ nhớ chỉ đọc (ROM) là loại bộ nhớ dùng để lưu trữ vĩnh viễn các chương trình thực thi Kích thước chương trình phụ thuộc vào dung lượng của ROM, có thể được tích hợp trong vi điều khiển hoặc lắp thêm như chip gắn ngoài Mỗi tùy chọn đều có những nhược điểm riêng.
Vi điều khiển, như một chip bên ngoài, thường rẻ hơn và có thể duy trì chương trình lâu hơn Chúng giúp giảm số lượng chân vào/ra, cho phép sử dụng cho các mục đích khác Mặc dù ROM nội thường nhỏ hơn và đắt tiền hơn, nhưng nó có thêm các chân kết nối với môi trường ngoại vi Kích thước của dãy ROM dao động từ 512B đến 64KB.
Bộ nhớ truy cập ngẫu nhiên (RAM) là loại bộ nhớ dùng để lưu trữ tạm thời dữ liệu và kết quả trung gian trong quá trình hoạt động của bộ vi điều khiển Nội dung trong RAM sẽ bị xóa khi nguồn điện bị tắt.
Bộ nhớ ROM có thể xóa và lập trình lại bằng điện (EEPROM) là một loại bộ nhớ đặc biệt chỉ có trên một số vi điều khiển EEPROM cho phép thay đổi nội dung trong quá trình thực hiện chương trình, tương tự như RAM, nhưng vẫn giữ lại dữ liệu vĩnh viễn ngay cả khi mất điện, giống như ROM Bộ nhớ này thường được sử dụng để lưu trữ các giá trị quan trọng như giá trị hiệu chuẩn, mã và các giá trị đếm, cần thiết cho hoạt động của thiết bị sau khi nguồn cung cấp bị ngắt Tuy nhiên, một nhược điểm của EEPROM là tốc độ ghi dữ liệu tương đối chậm.
Hình 5.1 Giao tiếp bộ nhớ
Bộ đếm chương trình (PC) là thành phần quan trọng trong CPU, chứa địa chỉ của ô nhớ mà câu lệnh tiếp theo sẽ được thực hiện Sau mỗi lệnh, giá trị của bộ đếm sẽ tăng lên 1, cho phép CPU tiến hành các thao tác tính toán và xử lý CPU cũng phát ra các tín hiệu địa chỉ, dữ liệu và điều khiển để thực hiện nhiệm vụ theo lệnh của người lập trình.
CPU (Đơn vị xử lý trung tâm) là bộ phận quan trọng trong máy tính, có chức năng thực hiện các phép toán và xử lý dữ liệu Nó phát sinh các tín hiệu địa chỉ, dữ liệu và điều khiển để thực hiện nhiệm vụ theo các lệnh mà người lập trình đã chỉ định.
Cấu trúc Port I/O
Hình 6.4 Vào ra với thiết bị ngoại vi
3.1 Port0: Port0 là port có 2 chức năng ở các chân (32–39)
Chức năng IO (xuất/nhập) thường được áp dụng cho các thiết kế nhỏ, nhưng khi sử dụng, cần thêm các điện trở kéo lên (pull-up) Giá trị của điện trở này phụ thuộc vào thành phần kết nối với Port.
- Khi dùng làm ngõ ra, Porto có thể kéo được 8 ngõ TTL
- Khi dùng làm ngõ vào, Port0 phải được set mức logic 1 trước đó
Chức năng của Port0 trong các thiết kế lớn yêu cầu sử dụng bộ nhớ ngoài là rất quan trọng, vì nó đóng vai trò vừa là bus dữ liệu 8bit, vừa là bus địa chỉ 8bit thấp.
Khi lập trình cho vi điều khiển AT89C51, Port0 không chỉ được sử dụng để nhận mã lập trình mà còn để xuất mã trong quá trình kiểm tra, quá trình này yêu cầu phải có điện trở kéo lên.
Port1 (chân1 – 8) chỉ có chức năng IO và không được sử dụng cho mục đích khác, ngoại trừ trong các vi điều khiển 8032/8052/8952, nơi P1.0 và P1.1 có thể được dùng cho bộ định thời thứ 3 Port1 đã được trang bị điện trở kéo lên, do đó không cần bổ sung điện trở ngoài.
- Port1 có khả năng kéo được 4 ngõ TTL và còn dùng làm 8bit địa chỉ thấp trong quá trình lập trình hay kiểm tra
- Khi dùng làm ngõ vào, Port1 phải được set mức logic 1 trước đó
3.2 Port2 : Port2 (chân21–28) là port có 2 chức năng:
- Chức năng IO (xuất/nhập): có khả năng kéo được 4ngõ TTL
- Chức năng địa chỉ: dùng làm 8bit địa chỉ cao khi cần bộ nhớ ngoài có địa chỉ 16bit Khi đó, Port2 không được dùng cho mục đích I/O
- Khi dùng làm ngõ vào, Port2 phải được set mức logic1 trước đó
- Khi lập trình, Port2 dùng làm 8bit địa chỉ cao hay một số tính hiệu điều khiển
3.3 Port3 : Port3 (chân10–17)là port có 2 chức năng:
- Chức năng IO:có khả năng kéo được 4 ngõ TTL
- Khi dùng làm ngõ vào, Port3 phải được set mức logic 1trước đó
Các Port khi xuất tín hiệu ở mức logic 1 thường không đạt đến 5V mà dao động trong khoảng từ 3.5V đến 4.9V và dòng xuất ra rất nhỏ dưới 5mA (P0,P2 dòng xuất
Dòng xuất ra từ P1 và P3 chỉ khoảng 1mA đến 5mA, không đủ để làm LED sáng Tuy nhiên, khi các Port xuất tín hiệu ở mức logic 0, dòng điện cho phép đi qua lớn hơn rất nhiều.
Chân Vi điều khiển khi ở mức 0:
Dòng lớn nhất qua P0 : -25mA
Dòng lớn nhất qua P1,P2,P3 : -15mA
Tổ chức bộ nhớ
4.1 Tổng quan tổ ch́ức bộ nhớ
Hình 6.5 Tổ chức bộ nhớ họ MCS-51
Bộ nhớ của họ MCS-51 được chia thành hai phần chính: bộ nhớ trong và bộ nhớ ngoài Bộ nhớ trong bao gồm 4KB ROM và 128 byte RAM (256 byte trong 8052) Các byte RAM có địa chỉ từ 00h đến 7Fh, trong khi các thanh ghi chức năng đặc biệt (SFR) có địa chỉ từ 80h đến 0FFh, cho phép truy xuất trực tiếp.
Các chip vi điều khiển là thành phần trung tâm trong thiết kế điều khiển, với bộ nhớ hạn chế, không có ổ khóa và hệ điều hành Chương trình điều khiển được lưu trữ trong ROM, và chip 8051 cung cấp không gian bộ nhớ riêng cho cả chương trình và dữ liệu Mặc dù bộ nhớ chương trình và dữ liệu đều nằm trong chip, nhưng có thể mở rộng dung lượng lên đến 64K bằng cách sử dụng các chip nhớ bên ngoài.
Bộ nhớ nội trong chip bao gồm ROM và RAM
Bộ nhớ ROM là nơi lưu trữ các chương trình do lập trình viên viết, bao gồm các câu lệnh thể hiện thuật toán để giải quyết công việc cụ thể Những chương trình này được thiết kế trên máy tính và sau đó lưu vào ROM của vi điều khiển Khi hoạt động, vi điều khiển sẽ truy xuất từng câu lệnh trong ROM để thực hiện chương trình Ngoài ra, ROM còn chứa các bảng dữ liệu, tham số hệ thống và số liệu cố định Dung lượng bộ nhớ ROM được tích hợp trong chip vi điều khiển thay đổi tùy theo loại, ví dụ như 8KByte cho 89S52 và 12KByte cho 89S53.
Bộ nhớ bên trong Vi điều khiển 89Sxx là loại Flash ROM, cho phép xóa và nạp chương trình mới bằng điện, đồng thời hỗ trợ việc nạp xóa nhiều lần.
Vi điều khiển có khả năng mở rộng bộ nhớ ROM thông qua giao tiếp với bộ nhớ ROM bên ngoài, cho phép dung lượng lên đến 64Kbyte, với địa chỉ từ 0000H đến FFFH.
Bộ nhớ RAM là môi trường quan trọng trong việc xử lý thông tin, lưu trữ kết quả trung gian và cuối cùng của các phép toán Nó cũng đóng vai trò trong việc tổ chức các vùng đệm dữ liệu, hỗ trợ hiệu quả cho các thao tác thu phát và chuyển đổi dữ liệu.
RAM nội trong Vi điều khiển được tổ chức như sau:
Các vị trí trên RAM được định địa chỉ theo từng Byte bằng các số thập lục phân (số Hex)
Các bank thanh ghi có địa chỉ 00H đến 1FH
210 vị trí được định địa chỉ bit
Các vị trí RAM bình thường
Các thanh ghi có chức năng đặc biệt có địa chỉ từ 80H đến FFH
Vùng RAM đa mục đích có dung lượng 80 byte, nằm trong khoảng địa chỉ từ 30H đến 7FH, cho phép truy xuất tự do đến bất kỳ vị trí nhớ nào thông qua các kiểu định địa chỉ trực tiếp hoặc gián tiếp.
4.3 Vùng RAM định địa chỉ bit
8051 có 210 vị trí bit được định địa chỉ, trong đó 128 bit nằm trong các byte từ địa chỉ 20H-2FH, và phần còn lại nằm trong các thanh ghi chức năng đặc biệt 32 vị trí thấp nhất của bộ nhớ nội được sử dụng để chứa các dãy thanh ghi.
8051 hỗ trợ 8 thanh ghi từ R0–R7 thuộc dãy 0 (bank0) Đây là dãy mặc định sau khi reset hệ thống Các thanh ghi này ở các địa chỉ từ 00H– 07H
Các lệnh sử dụng thanh ghi R0–R7 thực hiện nhanh hơn và ngắn gọn hơn so với lệnh sử dụng kiểu định địa chỉ trực tiếp Vì vậy, các giá trị thường xuyên sử dụng nên được lưu trữ trong các thanh ghi này Dãy thanh ghi đang được sử dụng được gọi là dãy thanh ghi tích cực, và dãy này có thể được thay đổi thông qua việc điều chỉnh các bit chọn dãy trong thanh ghi PSW.
Các thanh ghi chức năng đặc biệt (SFR)
Các thanh ghi nội của 8051 được cấu hình trong RAM trên chip, với mỗi thanh ghi có một địa chỉ riêng Trong số các thanh ghi từ R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SFR) nằm ở phần trên của RAM, từ địa chỉ 80H đến FFH Cần lưu ý rằng không phải tất cả 128 địa chỉ trong khoảng từ 80H đến FFH đều được định nghĩa, mà chỉ có 21 địa chỉ được xác định.
5.1.Từ trạng thái chương trình PSW (program status word)
Thanh ghi PSW có địa chỉ là D0H chứa các bit trạng thái có chức năng được tóm tắt trong bảng sau:
HIỆU ĐỊA CHỈ MÔ TẢ
AC D6H AuxiliaryCaryFlag: Cờ nhớ phụ
F0 D5H Flag0 còn gọi là cờ Zero kí hiệu là Z
RS1 D4H Register Bank Select 1: bit lựa chọn bank thanh ghi
RS0 D3H Register Bank Select 0: bit lựa chọn bank thanh ghi
00 nk 0; ô nhớ có address 00H÷07H gán cho R0-R7
01 nk 1; ô nhớ có address 08H÷0FH gán cho R0-R7
10 nk 2; ô nhớ có address 10H÷17H gán cho R0-R7
11 nk 3; ô nhớ có address 18H÷1FHgán choR0-R7
OV D2H Overflow Flag: cờ tràn số nhị phân có dấu
- D1H Reserved: chưa thiết kế nên chưa sử dụng được
P D0H Even Parity Flag: cờ chẵn lẻ
Thanh ghi Bở địa chỉ F0H được dùng chung với thanh chứa A trong các phép
64 toán nhân (MUL),chia (DIV).Các bit của thanh ghi B được định địa chỉ từ F0H-F7H
Con trỏ StackSP (stack pointer) là một thanh ghi 8 bit tại địa chỉ 81H, chứa địa chỉ của dữ liệu ở đỉnh Stack Các lệnh liên quan đến Stack bao gồm lệnh PUSH để cất dữ liệu vào Stack và lệnh POP để lấy dữ liệu ra Việc cất dữ liệu vào Stack sẽ làm tăng giá trị của thanh ghi SP trước khi ghi dữ liệu, trong khi việc lấy dữ liệu ra sẽ làm giảm giá trị của thanh ghi SP Nếu không khởi động SP, giá trị mặc định của thanh ghi này là 07H.
Vùng stack của 8051 được lưu trữ trong RAM nội, với địa chỉ truy xuất giới hạn bởi kiểu định địa chỉ gián tiếp Các lệnh PUSH và POP thực hiện việc lưu trữ và lấy dữ liệu từ stack, trong khi các lệnh gọi chương trình con như ACALL và LCALL, cùng với lệnh trở về RET và RETI, cũng quản lý nội dung của bộ đếm chương trình PC.
5.4.Con trỏ dữ liệu DPTR
Con trỏ dữ liệu DPTR (datapointer) được sử dụng để truy xuất bộ nhớ chương trình ngoài hoặc bộ nhớ dữ liệu ngoài DPTR là một thanh ghi 16 bit, với địa chỉ là 82H cho DPL (byte thấp) và 83H cho DPH (byte cao).
5.5.Các thanh ghi Port nối tiếp
Các cổng xuất nhập của vi điều khiển 8051 bao gồm: cổng 0 tại địa chỉ 80H, cổng 1 tại địa chỉ 90H, cổng 2 tại địa chỉ A0H và cổng 3 tại địa chỉ 0BH Cần lưu ý rằng cổng 0, 2 và 3 không thể sử dụng cho việc xuất/nhập khi có bộ nhớ ngoài hoặc khi một số tính năng nhất định được kích hoạt.
8051 được sử dụng (như là ngắt, port nối tiếp) Tất cả các port đều được định địa chỉ từng bit nhằm cung cấp các khả năng giao tiếp mạnh
5.6 Các thanh ghi định thời
8051 có hai bộ đếm định thời 16bit, cho phép định các khoảng thời gian hoặc đếm sự kiện Bộ định thời 0 được xác định tại địa chỉ 8AH (TL0, byte thấp) và 8CH (TH0, byte cao), trong khi bộ định thời 1 có địa chỉ 8BH (TL1, byte thấp) và 8DH (TH1, byte cao) Hoạt động của các bộ định thời này được điều chỉnh thông qua thanh ghi chế độ định thời TMOD tại địa chỉ 89H và thanh ghi điều khiển định thời TCON tại địa chỉ 88H.
5.7 Các thanh ghi port nối tiếp (Serial Data Buffer)
Bên trong vi điều khiển 8051 có một cổng nối tiếp cho phép truyền thông với các thiết bị như đầu cuối hoặc modem, cũng như giao tiếp với các IC khác Thanh ghi SBUF (bộ đệm dữ liệu nối tiếp) tại địa chỉ 99H lưu trữ dữ liệu được truyền đi và nhận về Việc ghi vào SBUF sẽ nạp dữ liệu để truyền, trong khi việc đọc SBUF sẽ lấy dữ liệu đã nhận Dữ liệu được chuyển vào SBUF sẽ được lưu giữ trong bộ đệm truyền dữ liệu cho đến khi quá trình truyền thông nối tiếp hoàn tất, và khi dữ liệu được truyền ra ngoài, nó sẽ được lấy từ bộ đệm nhận dữ liệu của hệ thống.
Các chế độ hoạt động khác nhau được lập trình thông qua thanh ghi điều khiển port nối tiếp SCON (serial port control register) tại địa chỉ 98H, trong khi TCON được định địa chỉ từng bit.
8051 có cấu trúc ngắt với hai mức ưu tiên và năm nguyên nhân ngắt Sau khi hệ thống được reset, các ngắt sẽ bị vô hiệu hóa và chỉ được cho phép khi ghi vào thanh ghi cho phép ngắt IE tại địa chỉ A8H Mức ưu tiên của các ngắt giúp quản lý hiệu quả các sự kiện trong hệ thống.
65 ngắt được thiết lập qua thanh ghi ưu tiên ngắt IP (interruptpriorityregister) ở địa chỉ B8H Cả hai thanh ghi này đều được định địa chỉ từng bit
5.9.Thanh ghi điều khiển nguồn PCON
Thanh ghi PCON (power control) giúp điều khiển công suất của vi điều khiển trong quá trình hoạt động và chế độ chờ Khi vi điều khiển không còn thực hiện nhiệm vụ, lập trình viên có thể thiết lập để vi điều khiển chuyển sang chế độ chờ, nhằm giảm thiểu mức tiêu thụ năng lượng, đặc biệt quan trọng khi nguồn cung cấp là pin.
Thanh ghi PCON tại địa chỉ 87H không cho phép định địa chỉ bit:
Chức năng SMOD1 SMOD0 - POF GF1 GF0 PD IDL
+SMOD1(SerialMode1):=1 cho phép tăng gấp đơi tốc độ port nối tiếp trong chế độ1, 2 và 3
+SMOD0 (SerialMode0): cho phép chọn bit SM0 hay FE trong thanh ghi SCON (họn bit FE)
+POF(Power-offFlag):dùng để nhận dạng loại reset POF=1 khi mở nguồn
Do đó, để xác định loại reset,cần phải xóa bit POF trướcđó
+GF1, GF0 (GeneralpurposeFlag):các bit cờ dành cho người sử dụng
PD (PowerDown) được xóa bằng phần cứng khi xảy ra hoạt động reset Khi bit PD=1, vi điều khiển chuyển sang chế độ nguồn giảm, giúp tiết kiệm năng lượng hiệu quả.
Chỉ có thể thốt khỏi chế độ nguồn giảm bằng cách reset
Nội dung RAM và mức logic trên các port được duy trì
Mạch dao động bên trong và các chức năng khác ngừng hoạt động
Chân ALE và PSEN ớ mức thấp
Yêu cầu Vcc phải có điện áp ít nhất là 2V và phục hồi Vcc=5V ít nhất 10 chu kỳ trước khi chân RESET xuống mức thấp lần nữa
Khi bit IDL=1, vi điều khiển sẽ chuyển sang chế độ nghỉ, và chế độ này sẽ bị xóa bằng phần cứng khi có hoạt động reset hoặc ngắt xảy ra.
Chế độ nguồn giảm chỉ có thể được thoát ra bằng cách thực hiện Reset hoặc khi có sự ngắt xảy ra Trong quá trình này, trạng thái hiện tại của vi điều khiển sẽ được duy trì và nội dung của các thanh ghi sẽ không bị thay đổi.
+ Mạch dao động bên trong không gởi được tín hiệu đến CPU
+ Chân ALE và PSEN mức cao
- Lưu ý rằng các bit điều khiển PD và IDL có tác dụng chính trong tất cả các
IC họ MSC-51nhưng chỉ có thể thực hiện được trong các phiên bản CMOS.
Bộ nhớ ngoài
MCS-51 sử dụng cấu trúc Harvard, cho phép phân biệt giữa bộ nhớ chương trình và bộ nhớ dữ liệu Nó hỗ trợ kết nối với 64KB cho cả chương trình và dữ liệu Bộ nhớ chương trình được truy xuất qua chân PSEN, trong khi bộ nhớ dữ liệu được truy xuất qua chân WR hoặc RD.
Khi truy xuất bộ nhớ chương trình, địa chỉ luôn là 16 bit, trong khi bộ nhớ dữ liệu có thể là 8 bit hoặc 16 bit tùy thuộc vào câu lệnh Nếu sử dụng bộ nhớ dữ liệu 8 bit, Port2 có thể hoạt động như một Port I/O thông thường Ngược lại, khi sử dụng ở chế độ 16 bit, Port2 chỉ được sử dụng để làm các bit địa chỉ cao.
Port0 được sử dụng làm địa chỉ thấp và dữ liệu đa hợp Tín hiệu /ALE giúp tách byte địa chỉ và đưa vào bộ chốt ngoài Trong chu kỳ ghi, byte dữ liệu sẽ có mặt tại Port0 ngay trước khi tín hiệu /WR trở nên tích cực và sẽ được giữ cho đến khi tín hiệu /WR không còn tích cực Trong chu kỳ đọc, byte nhận được sẽ được chấp nhận ngay trước khi tín hiệu /RD không còn tích cực.
66 o Bộ nhớ chương trình ngoài được xử lý 1trong 2 điều kiện sau:
- Tín hiệu EA tích cực(=0)
- Giá trị của bộ đếm chương trình(PC- Program Counter) lớn hơn kích thước bộ nhớ
Bộ nhớ dữ liệu ngoài được truy xuất bằng lệnh MOVX thông qua các thanh ghi xác định địa chỉ DPTR (16 bit) hay R0,R1 (8 bit)
Quá trình thực hiện đọc hay ghi dữ liệu được cho phép bằng tín hiệu RD hay
Trong các ứng dụng vi điều khiển 8051, ngoài giao tiếp với bộ nhớ dữ liệu, vi điều khiển còn tương tác với các thiết bị như bàn phím, LED và động cơ thông qua các Port Khi số lượng thiết bị tăng lên, các Port sẽ không đủ để điều khiển Giải pháp là xem các thiết bị này như bộ nhớ dữ liệu, yêu cầu thực hiện quá trình giải mã địa chỉ để phân biệt các thiết bị ngoại vi Quá trình này thường được thực hiện bằng các IC giải mã như 74139, 74138 và 74154, với ngõ ra được kết nối tới chân chọn chip hoặc bộ đệm để điều khiển ngoại vi.
Hoạt động Reset
8051 được reset bằng cách giữ chân RST ở mức cao ít nhất 2 chu kỳ máy, sau đó chuyển về mức thấp RST có thể được tác động bằng tay hoặc tự động khi cấp nguồn thông qua một mạch RC.
Trạng thái của các thanh ghi sau khi reset như sau:
Các thanh ghi định thời 00H
Bài 1: Vẽ sơ đồ chân và giải thích chức năng của các chân trong Vi điều khiển 8051?
Bài 2: Mô tả chuỗi lê ̣nh ghi giá tri ̣ 0ABH vào đi ̣a chỉ 9A00H của RAM ngoài trong hệ thống 8051
Bài 3: Viết chuỗi lê ̣nh chép nô ̣i dung thanh ghi R7 vào đi ̣a chỉ 100H của bô ̣ nhớ RAM ngoài
Sau khi hệ thống được reset, lệnh đầu tiên thực hiện sẽ là một lệnh gọi chương trình con Thanh ghi PC sẽ lưu trữ địa chỉ của RAM trước khi chuyển đến chương trình con.
Bài 5: Viết chuỗi lê ̣nh giá tri ̣ trong ô nhớ có đi ̣a chỉ 50H của RAM nô ̣i vào thanh ghi chứ a sử du ̣ng đi ̣nh vi ̣ đi ̣a chỉ gián tiếp
Trong bài 6, chúng ta sẽ tính giá trị offset tương đối cho lệnh SJMP AHEAD, với giả định rằng lệnh này nằm tại địa chỉ A050H và A051H Nhãn AHEAD đại diện cho lệnh nằm tại địa chỉ 9FE0H.
Yêu cầu về đánh giá kết quả học tập:
+ Về kiến thức: cấu tạo, đặc điểm, ứng dụng của các loại Vi điều khiển
- Thực hiện viết các chương trình theo yêu cầu cho trướ c
+ Năng lực tự chủ và trách nhiệm: Đánh giá phong cách, thái độ học tập
+ Về kiến thức: Được đánh giá bằng hình thức kiểm tra viết, trắc nghiệm
Đánh giá kỹ năng thực hành của sinh viên hoặc nhóm học viên là một phần quan trọng trong quá trình học tập, nhằm đảm bảo rằng các em thực hiện công việc theo yêu cầu của giáo viên Tiêu chí đánh giá sẽ dựa trên các nội dung cụ thể, giúp xác định mức độ hoàn thành và chất lượng công việc.
- Độ chính xác của công việc
- Độ an toàn trên mạch điện
- Thời gian thực hiện công việc
- Độ chính xác theo yêu cầu kỹ thuật
+ Năng lực tự chủ và trách nhiệm: Tỉ mỉ, cẩn thận, chính xác
BÀI 7: PHẦN MỀM HỢP NGỮ
Mã bài: MĐ21-07 Giới thiệu:
Vi điều khiển là một IC lập trình cần được lập trình trước khi sử dụng Mỗi phần cứng phải đi kèm với một chương trình phù hợp, vì vậy người viết cần nắm rõ cấu tạo phần cứng và các yêu cầu của mạch điện trước khi viết chương trình.
Chương trình cho vi điều khiển có thể được viết bằng các ngôn ngữ như C++, C, Visual Basic hoặc các ngôn ngữ cấp cao khác Assembly là ngôn ngữ cấp thấp, trong đó mỗi câu lệnh tương ứng với một chỉ lệnh mà bộ xử lý có thể thực hiện Ưu điểm của hợp ngữ Assembly bao gồm mã gọn, chiếm ít dung lượng bộ nhớ, tốc độ hoạt động nhanh và hiệu suất tốt hơn so với các chương trình viết bằng ngôn ngữ bậc cao khác.
Trình bày được sự cần thiết và cơ chế hoạt động của trình dịch hợp ngữ theo nội dung đã học
Chương trình hợp ngữ có cấu trúc chung rõ ràng, bao gồm các thành phần chính đã được học Để xây dựng một chương trình tổ chức lớn, cần thực hiện việc phân chia thành các mô đun theo đúng quy trình kỹ thuật, đảm bảo tính hiệu quả và dễ quản lý.
Viết được chương trình điều khiển theo yêu cầu
Hoạt động của Assembler
Vì các lệnh của vi điều khiển (VĐK) có dạng số nhị phân dài và khó nhớ, việc gỡ lỗi chương trình trở nên phức tạp Để giải quyết vấn đề này, người lập trình có thể sử dụng ngôn ngữ lập trình cấp cao, và sau khi hoàn tất, trình biên dịch tự động chuyển đổi các câu lệnh này thành mã máy Mã máy sau đó được nạp vào bộ nhớ ROM của VĐK, cho phép vi điều khiển thực hiện chương trình Tuy nhiên, máy tính không thể thực hiện mã máy trực tiếp do không tương thích với phần cứng, cần có các chương trình mô phỏng riêng Hợp ngữ (assembly language) giúp thay thế mã nhị phân bằng các từ dễ nhớ, nhưng máy tính vẫn không hiểu hợp ngữ Do đó, trình biên dịch hợp ngữ Assembler và trình liên kết Linker được sử dụng để chuyển đổi các chương trình viết bằng hợp ngữ sang ngôn ngữ máy.
Chương trình hợp ngữ (Assembly Language Program) là loại chương trình được viết bằng cách sử dụng các nhãn và từ gợi nhớ, với mỗi phát biểu tương ứng với một lệnh của ngôn ngữ máy Mã nguồn viết bằng hợp ngữ không thể thực thi trực tiếp, mà giúp lập trình viên hiểu và gỡ lỗi các hoạt động của vi điều khiển Assembly là ngôn ngữ lập trình cấp thấp gần gũi với ngôn ngữ máy, và sau khi viết xong, chương trình cần được chuyển đổi sang mã máy thông qua chương trình dịch Assembler Các mã lệnh này sau đó được nạp vào ROM của vi điều khiển để thực thi Hiện nay, Macro Assembler là chương trình dịch Assembler phổ biến được sử dụng trên hệ điều hành DOS.
Chương trình ngôn ngữ máy, hay còn gọi là mã đối tượng, bao gồm các mã nhị phân tương ứng với từng lệnh của vi xử lý Những chương trình này có thể được thực thi trực tiếp, cho phép máy tính thực hiện các tác vụ một cách hiệu quả.
Chương trình Assembler chuyển đổi mã hợp ngữ thành ngôn ngữ máy, với ngôn ngữ máy có thể ở dạng tuyệt đối hoặc tái định vị Chương trình Linker kết hợp các chương trình đối tượng tái định vị để tạo ra chương trình đối tượng tuyệt đối, giúp thực thi chương trình hiệu quả.
Segment là một đơn vị bộ nhớ dùng để chứa mã lệnh hoặc dữ liệu, có thể ở dạng tuyệt đối hoặc tái định vị được Segment tái định vị được có tên, kiểu và thuộc tính, cho phép linker kết hợp với các đoạn khác để định vị chính xác Ngược lại, segment ở dạng tuyệt đối không có tên và không thể kết hợp với các đoạn khác.
Module là một phần chứa một hoặc nhiều segment, và người dùng có thể đặt tên cho module Định nghĩa của module xác định phạm vi của các ký hiệu cục bộ Một tập tin đối tượng có thể chứa một hoặc nhiều module, trong nhiều trường hợp, module được coi như một tập tin.
Chương trình vi điều khiển MSC-51 bao gồm nhiều module tuyệt đối, kết hợp các đoạn mã từ tất cả các module nhập và chỉ chứa mã nhị phân mà máy tính có thể hiểu Tất cả các vi điều khiển MSC-51 đều sử dụng chung một tập lệnh, trong khi các phiên bản cải tiến sau này thường ít thay đổi tập lệnh mà tập trung vào phát triển phần cứng Để soạn thảo chương trình, người dùng có thể sử dụng Notepal hoặc bất kỳ trình soạn thảo nào hỗ trợ bộ ký tự chuẩn ASCII, lưu với đuôi ".asm" Ngoài ra, cũng có thể sử dụng phần mềm soạn thảo chuyên dụng cho vi điều khiển đã tích hợp sẵn trình biên dịch Assembler.
ASM51 là một trình biên dịch assembler do Intel phát triển, được sử dụng để biên dịch các chương trình viết bằng hợp ngữ cho vi điều khiển MCS51 Để sử dụng ASM51, người dùng cần thực hiện theo cú pháp từ dấu nháy trong môi trường DOS hoặc Win Commander.
ASM51 source_file[assembler_control]
Trong đó source_file là tên tập tin nguồn viết bằng hợp ngữ, assembler_control là những điều khiển assembler
Assembler nhận tập tin nguồn (ví dụ “example.asm”) sẽ tạo ra tập tin đối tượng (“example.Obj”) và tập tin kiểu liệt kê (“example.lst”) như hình 7.1
Hình 7.1 Biên dịch một chương trình nguồn
Tất cả các chương trình biên dịch thực hiện quá trình dịch mã nguồn sang ngôn ngữ máy qua hai lần quét, do đó được gọi là Assembler hai bước Assembler sử dụng bộ đếm vị trí để xác định địa chỉ của các lệnh và giá trị của các nhãn Các bước hoạt động của quá trình này được mô tả chi tiết như sau:
Bước đầu tiên trong quá trình lập trình là nhận diện các nhãn và ký hiệu trong chương trình nguồn, sau đó tính toán các địa chỉ tương đối của chúng và lưu trữ vào bảng ký hiệu Bảng ký hiệu này bao gồm các vị trí nhãn, các ký hiệu và giá trị tương ứng Bộ đếm vị trí sẽ giữ địa chỉ của các lệnh và giá trị của nhãn trong chương trình.
Bước 2: tạo ra tập tin đối tượng và tập tin liệt kê:
Các toán hạng được định vị và đặt sau các mã lệnh
Các giá trị kí hiệu được truy cập để tính đúng dữ liệu hoặc địa chỉ
Cho phép tham chiếu tới
Tập tin tái định vị chứa thông tin cần cho linker và định vị
Tập tin liệt kê chứa chương trình nguồn và mã lệnh.
Cấu trúc chương trình dữ liệu
2.1 Các thành phần cơ bản của ngôn ngữ Assembly
- Lables:Nhãn–đánh dấu cho một đoạn lệnh
- Directives: Định hướng chương trình dịch
- Comments:Các lời chú thích
Một dòng lệnh trong chương trình hợp ngữ gồm có các trường sau:
Tên Lệnh Toán hạng Chú thích
A: Mov AH, 10h ; Đưa giá trị 10h vào thanh ghi AH Để có thể dịch thành file mã máy dạng HEX-Code trước khi download vào Chip thì một chương trình assembly phải tuân thủ các nguyên tắcsau:
- Mỗi dòng lệnh không vượt quá 255 kýtự
- Mỗi dòng lệnh phải bắt đầu bằng 1 ký tự,nhãn,lệnh hoặc chỉ thị định hướng chương trình dịch
Mọi thứ sau dấu ";" được coi là lời giải thích và sẽ bị chương trình dịch bỏ qua Các thành phần trong mỗi dòng lệnh cần được phân cách bởi ít nhất một dấu cách.
2.2.Cấu trúc chương trình dữ liệu
• Những lệnh của vi xử lý
• Những chỉ dẫn assembler (Assembler Directive)
Cú pháp lệnh của vi xử lý như sau:
[label:] mnemonic [operand] [,operand] […] [;comment]
Trong lập trình, label là nhãn được theo sau bởi dấu hai chấm “:”, mnemonic là từ gợi nhớ của lệnh, và operand là toán hạng có thể có một hoặc nhiều giá trị, hoặc không có Chú thích cho lệnh được đặt sau dấu chấm phẩy “;” Kí hiệu là tên định nghĩa để biểu diễn giá trị, khối văn bản, địa chỉ hoặc tên thanh ghi, cũng như các hằng số và biểu thức Tên kí hiệu có thể dài tối đa 31 kí tự, với kí tự đầu tiên phải là chữ cái, dấu “?” hoặc “-”, và các kí tự tiếp theo có thể là chữ, số, “?” hoặc “-” Kí hiệu có thể sử dụng chữ in hoa hoặc thường mà không phân biệt Lưu ý rằng các từ kí hiệu đã được sử dụng không được phép dùng cho các mục đích khác trong lập trình.
Nhãn là một loại kí hiệu dùng để định nghĩa vị trí trong chương trình:
• Tên nhãn tượng trưng cho một địa chỉ
• Vùng văn bản thứ nhất trong dòng hợp ngữ
• Theo sau nhãn là dấu hai chấm “:”
• Trên một hàng chỉ có thể định nghĩa một nhãn
• Không được đặt tên các nhãn trùng nhau
Mnemonic là tất cả các từ gợi nhớ cho tất cả các lệnh và các chỉ dẫn assembler:
• Mnemonic cho lệnh: ADD, SUB, MUL, DIV, MOV,…
• Mnemonic cho chỉ dẫn assembler: org, equ, db, bit,…
Toán hạng operand là đối số hoặc biểu thức được đặt tả cùng với lệnh hoặc chỉ dẫn assembler, toán hạng có thể là địa chỉ hoặc dữ liệu
Trong hợp ngữ ASM51 có các kiểu toán hạng bảng sau:
Kiểu toán hạng Mô tả
Dữ liệu tức thời được biểu thị bằng ký hiệu hoặc hằng số, cung cấp giá trị số Địa chỉ bit trực tiếp cũng sử dụng ký hiệu hoặc hằng để tham chiếu đến địa chỉ bit cụ thể Địa chỉ chương trình tham chiếu đến địa chỉ mã thông qua ký hiệu hoặc hằng Địa chỉ dữ liệu trực tiếp cho phép tham chiếu đến địa chỉ dữ liệu bằng ký hiệu hoặc hằng Cuối cùng, địa chỉ gián tiếp tham chiếu đến bộ nhớ một cách gián tiếp, có thể thông qua offset.
Kí hiệu assembler đặc biệt Tên thanh ghi
Dữ liệu tức thời (immediate data) là biểu thức số được mã hóa trong lệnh ngôn ngữ máy, và nó luôn được đánh dấu bằng ký hiệu “#” ở phía trước.
Ví dụ 5: MOV R0,#30, trong đó 30 được xem là dữ liệu tức thời Địa chỉ bit trực tiếp (direct bit address) cho phép truy cập các bit của các ô nhớ hỗ trợ truy xuất bit.
Có 3 cách để định địa chỉ bit:
Truy xuất trực tiếp địa chỉ bit
Truy xuất toán tử chấm (byte.bit)
Kí hiệu assembler được định nghĩa trước
Ví dụ 6: SETB 00H ;bit có địa chỉ 00H
Lệnh CLR ACC.7 có chức năng xóa bit thứ 7 của thanh ghi A Địa chỉ chương trình (program address) là toán hạng của lệnh nhảy Đối với lệnh nhảy tương đối, toán hạng có độ dài 8 bit được xem là offset cho lệnh nhảy không điều kiện SJMP và lệnh nhảy có điều kiện Trong khi đó, lệnh nhảy và lệnh gọi tuyệt đối sử dụng toán hạng 11 bit để quản lý trang bộ nhớ cho lệnh AJMP và ACALL Cuối cùng, lệnh nhảy và lệnh gọi có địa chỉ dài sử dụng toán hạng 16 bit để quản lý toàn bộ bộ nhớ cho lệnh LJMP và LCALL.
Lệnh JMP có thể được dịch hợp thành lệnh SJMP, AJMP hoặc LJMP
Lệnh Call có thể được dịch hợp thành lệnh ACALL hoặc LCALL
Người lập trình không cần quan tâm đến địa chỉ thật khi nhảy hay gọi
Quy tắc chuyển thành tuỳ thuộc vào assembler:
Lệnh SJMP: không có tham chiếu tới và địa chỉ đích trong vùng -128 byte so với địa chỉ của lệnh kế
Lệnh AJMP/ACALL: không có tham chiếu tới và địa chỉ đích trong vùng nhớ cùng khối 2 KByte so với lệnh kế
Lệnh AJMP/ACALL: có tham chiếu tới địa chỉ đích trong vùng nhớ 64Kbyte
Địa chỉ dữ liệu trực tiếp (direct data address) cho phép truy xuất bộ nhớ dữ liệu nội từ 00H đến 7FH, cùng với các vùng nhớ chứa thanh ghi đặc biệt từ 80H đến FFH Tất cả các kí hiệu được định nghĩa đều có thể áp dụng cho các thanh ghi chức năng.
Địa chỉ dữ liệu gián tiếp sử dụng các thanh ghi như R0, R1, DPTR và PC để chứa địa chỉ của các ô nhớ cần truy xuất Các kí hiệu đặc biệt trong assembler bao gồm A, DPTR, R0 đến R7, PC, cờ C và cặp thanh ghi AB, giúp định địa chỉ bằng thanh ghi Kí hiệu “$” được dùng để tham chiếu đến giá trị hiện hành của bộ đếm vị trí.
Ví dụ 8: hai lệnh sau là tương đương:
Ten_bien DB Gia_Tri_Khoi_Tao
DB là chỉ lệnh dữ liệu phổ biến nhất trong hợp ngữ, được sử dụng để định nghĩa dữ liệu 8 bit Khi định nghĩa byte dữ liệu, các số có thể ở dạng thập phân, nhị phân, Hex hoặc ASCII Đối với dữ liệu thập phân, cần thêm chữ "D" sau số, chữ "B" cho số nhị phân, và chữ "H" cho dữ liệu dạng Hex Đối với dữ liệu có kích thước 2 byte, cần sử dụng quy tắc tương ứng.
DW để khai báo biến kiểu nguyên
Hằng số Ten_Hang được sử dụng để định nghĩa một giá trị cố định mà không chiếm dụng bộ nhớ Lệnh EQU không dành chỗ lưu trữ cho dữ liệu, mà chỉ liên kết một giá trị hằng số với nhãn dữ liệu Khi nhãn này xuất hiện trong chương trình, giá trị hằng số tương ứng sẽ được thay thế cho nhãn đó.
2.2.3 Cấu trúc một chương trình hợp ngữ
ORG 0000h; Đặt lệnh LJMP main tại địa chỉ
LJMP main; 0000h (địa chỉ bắt đầu khi reset AT89C51)
ORG 0030h; Vùng địa chỉ 0003h–002Fh
Main: ;dùngđể chứa các chương trình phục vụ ngắt
END ;kết thúc chương trình
3.Tính biểu thức trong khi hợp dịch
Ký hiệu Thực hiện Ví dụ Kết quả
MOD Chia lấy dư 7MOD4 3
LOW Lấy byte thấp LOW(0AADDH) 0DDH
HIGH Lấy byte cao HIGH(0AADDH) 0AAH
EQ,= So sánh bằng 7EQ4or 7=4 0(false)
NE, SS Không bằng 7NE4or 74 0FFFFH(true)
GT,> SS lớn hơn 7GT4or 7>4 0FFFFH(true)
GE,>= SS nhỏ hơn hoặc bằng 7GE4or 7>=4 0FFFFH(true)
LT,< SS nhỏ hơn 7LT4or7