Giáo trình tham khảo học tập về điều khiển lập trình PLC - Mạng PLC. PLC viết tắt của Programmable Logic Controller , là thiết bị điều khiển lập trình được (khả trình) cho phép thực hiện linh... điều k
Trang 1PhÇn I:
giíi thiÖu chung vÒ ®iÒu khiÓn
logic vμ thiÕt bÞ plc
Trang 2Trong phần này chúng ta đi tìm hiểu về khái niệm điều khiển lôgic và các kiến thức về PLC
1.1 Khái niệm điều khiển logic
Trong thực tế công nghệ có nhiều đại lượng vật lý cần điêù khiển và quan tâm
đến giá trị của nó tại một thời điểm có thể là lớn hay nhỏ quá trình điều đó gọi là
điều khiển qúa trình Nhưng ngoài ra còn có một điều khiển khác trong quá trình sản xuất cần quan tâm tới đó là việc đồng bộ quá trình làm việc của toàn bộ hệ thống Khi đó ta chỉ quan tâm đến trạng thái của các thiết bị đang làm việc hay nghỉ quá trình này gọi là điều khiển lôgic
Điều khiển lôgic xuất phát từ thực tế ngoài việc thiết bị làm việc như thế nào người ta còn phải quan tâm tới việc khi nào cho thiết bị làm việc, khi nào cho thiết bị nghỉ để đạt được hiệu quả cao trong quá trình điều khiển
Vậy trong điều khiển lôgic ta cần quan tâm tới 2 trạng thái do đó về mặt tín hiệu người ta quan tâm đến 2 trạng thái: Trạng thái cao(High) và trạng thái thấp (low).Thông thường trong thiết kế điều khiển logic người ta ngầm qui ước thiết
bị đang làm việc có trạng thái Logic 1 hay trạng thái cao còn khi thiết bị đang nghỉ thì ở mức lôgic 0 hay trạng thái thấp Tuy nhiên việc quy ước trên chỉ là tương đối mà tuỳ theo thiết bị điều khiển mà tương ứng với 0 là điểm nghỉ và là
điều khiển làm việc hoặc ngược lại còn nếu con người chủ động áp đặt 1 là làm việc thì chọn thiết bị cho phù hợp và có thể đặt ngược lại
Trong điều khiển lôgic ta cần quan tâm đến các biến đầu vào để gia công theo hàm logic tạo nên giá trị đầu ra Quan hệ giữa đầu ra và đầu vào nhờ
chương trình phần mềm hay phần cứng điều khiển Các biến đầu vào được tạo nên từ các nút ấn, công tắc các giá trị này phụ thuộc vào người vận hành hay trình tự của công nghệ Ngoài ra các biến vào khác Sensor logic của các thiết bị
do lường các đại lựơng vật lý mà ta cần điều khiển như tín hiệu ra của các công tắc hành trình, Rơle điện áp, Rơle áp lực, Rơle nhiệt…
Hàm Logic đầu ra đưa tới điều khiển các đối tượng có thể là nhóm các thiết
bị như các cuộn hút các thiết bị đóng cắt hay động cơ của máy sản xuất…
Trang 31.2 Khái niệm chung - ứng dụng của PLC
1.2.1 Khái niệm về PLC
PLC (Programable Logic Controller) là một thiết bị điều khiển logic lập trình
được Thiết bị này có các đầu vào logic sau quá trình xử lý theo chương trình bên trong nó cho đầu ra là các mức logic có quan hệ với các đầu vào thông qua chương trình bên trong thiết bị PLC có ứng dụng rộng rãi và dần không thể thiếu
được trong các dây truyền sản xuất hiện đại Chức năng điều khiển của PLC rất
đa dạng nó có thể thay thế cho 1 mảng rơle hơn thế việc mở rộng PLC giống như một máy tính nó có thể lập trình được Chương trình của PLC thay đổi đơn giản
rễ ràng bằng một máy lập trình cầm tay hay một máy tính cá nhân có phần mềm trợ giúp Khi đó có thể một nhân viên vận hành cũng có thể lập trình được Sở dĩ PLC có vai trò quan trọng tới mức không thể thiếu được trong các giây truyền sản xuất hiện đại chính là bởi tính mềm dẻo và tiện dụng được ứng dụng trong mọi lĩnh vực vì quy luật điều khiển của nó hoàn toàn thay đổi được một cách rễ ràng
1.2.2 Cấu trúc chung của 1 bộ PLC
Một bộ PLC có cấu trúc chung như sau:
Khi nghiên cứu tới PLC điều đầu tiên đó là số lượng các đầu vào và đầu ra (Input, Output) đối với một PLC thì số đầu vào ra có thể là 6 hoặc 8 hay nhiều hơn Số lượng đầu vào và đầu ra cho biết mức độ quản lý được nhiều thiết bị
IN0
IN1
INK
Bộ điều khiển theo chương trình
độc lập
Các
đầu ra logic
độc lập
Trang 4Vấn đề này đặc biệt quan trọng khi ứng dụng PLC cho một dây truyền sản xuất phức tạp cần gia công nhiều biến đầu vào
Các biến đầu vào được lấy từ các công tắc đóng cắt thông thường, công tắc
vị trí hay các Sensor logic để đặt các giá trị logic ở đầu vào Các đầu vào này thường có mức điện áp cao để tăng độ tin cậy khi cầu truyễn xa Vì bên trong của PLC là một bộ vi điều khiển với vi điều khiển không làm việc với mức điện
áp cao vì vậy cần một mạch chuyển mức điện áp về mức chuẩn với mức logic 1
là +5 và mức logic 0 là 0V Khi đó PLC (bộ điều khiển bên trong) sẽ quét các cổng vào để lấy dữ liệu sau một quá trình xử lý bên trong bằng chương trình phần mềm sau đó dữ liệu đầu ra dạng số với mức logic 1 là +5V mức logic 0 là 0V qua mạch chuyển mức ta có các mức ra điện áp cao hơn để đáp ứng yêu cầu
Ngoài ra các đầu vào ra logic thì PLC còn có các đầu vào để cấp nguồn thông thường nguồn nuôi PLC là một điện áp xoay chiều qua xử lý nguồn tạo ra
điện áp 1 chiều phù hợp để nuôi bộ vi điều khiển và các mạch điện tử khác 1.2.3 ứng dụng vμ ưu nhược điểm của bộ điều khiển logic có khả năng lập trình (PLC).
Sự ra đời của PLC đã đáp ứng được yêu cầu cần thiết của việc điều khiển các dây truyền sản xuất và một loạt các yêu cầu khác mà các thiết bị điều khiển logic trước nó không thể đáp ứng hoặc đáp ứng hạn chế
Đơn cử việc ứng dụng PLC để thay thế cho 1 mảng rơle Trong các hệ thống khống chế - điều khiển logic truyền thống qúa trình này được thực hiện bằng mảng các rơle - công tắc tơ và sau này còn được thay thế bằng các mạch IC
Trang 5số rõ ràng thực hiện quá trình điều khiển này hoàn toàn thực hiện bằng phần cứng vì vậy mà mỗi một yêu cầu điều khiển thì lại phải đi xây dựng 1 phần cứng
đáp ứng yêu cầu trên mà việc xây dựng bằng phần cứng như vậy là cực kỳ khó khăn về mặt kỹ thuật, chi phí tốn kém về mặt kinh tế và đặc biệt là mất rất nhiều thời gian khi xây dựng cũng như khi có yêu cầu thay đổi hay hiệu chỉnh thì phải cho hệ thống dừng và tháo ra lắp lại hoàn toàn bằng phần cứng vì vậy mà tổng chi phí cho quá trình này là rất lớn Đặc biệt với các dây truyền yêu cầu điều khiển phức tạp thì mạch này chiếm một thể tích đáng kể và độ tin cậy không cao Việc đưa PLC vào để thay thế cho quá trình điều khiển logic đem lại những ưu điểm nổi bật
Với một hệ thống lớn thì chi phí cho một bộ PLC là rất nhỏ Một PLC rất gọn nhẹ mà mức độ điều khiển là vô cùng lớn Các tiếp điểm trong mạch điều khiển logic bằng cuộn dây rơle đã được thay thế bằng câu lệnh vì vậy số lượng tiếp điểm là không hạn chế
Đặc điểm tính mềm dẻo trong điều khiển mà ta có thể thay thế luật điều khiển rất đơn giản và nhanh gọn mà hầu như không phải chi phí tài chính trong khi hệ thống đang làm việc bằng một máy lập trình cầm tay (HPC) hay một máy tính cá nhân (PC) ta hoàn toàn có thể gọi chương trình ra đế sửa chữa Việc lắp
đặt PLC rất đơn giản nhanh gọn chỉ cần xác định các đầu vào và đầu ra việc lập trình cho PLC hoàn toàn thực hiện được bằng phần mềm do nhà sản xuất cung cấp, các nhà sản xuất
Các nhà sản xuất PLC có thể sản xuất theo phương pháp sản xuất hàng loạt tuỳ theo ứng dụng mà khi viết chương trình sẽ tạo ra các quy luật đều khác nhau vì vậy mà làm giảm giá thành của PLC
Vậy các ưu điểm khi dùng PLC
- Thời gian lắp đạt công trình ngắn
- Dễ dàng thay đổi mà không gây tổn thất đến tài chính
- Có thể dễ dàng tính toán chính xác giá thành
- Cần ít thời gian huấn luyện
Trang 6- Phạm vi ứng dụng rộng
- Dễ dàng bảo trì, xử lý sự cố dễ nhanh hơn
- Độ tin cậy cao
- Chuẩn hoá được phần cứng điều khiển
- Thích ứng trong môi trường khắc nghiệt
Tuy nhiên với mức độ quản lý và điều khiển rộng thì PLC lại không phù hợp với những hệ thống nhỏ, đơn giản vì khi đó sẽ không tận dụng được khả năng làm việc của thiết bị này
Các ứng dụng chính của PLC
Điều khiển giám sát
a Thay cho điều khiển rơle
b Tạo bộ đếm thời gian
c Thay cho các Panell điều khiển mạch in
d Điều khiển tự động, bán tự động các qúa trình
Điều khiển dãy
a Các phép toán số học
b Cung cấp thông tin
c Điều khiển liên tục (nhiệt độ, áp suất)
d Điều khiển PID
e Điều khiển động cơ chấp hành
f Điều khiển động cơ bước
Điều khiển mềm dẻo
a Điều khiển qúa trình báo động
b Phát hiện lỗi điều hành
c Ghép nối máy tính với RS 232 / RS 242
d Ghép nối máy in
Trang 7Như vậy ứng dụng PLC trong kỹ thuật là vô cùng phong phú trong rất nhiều lĩnh vực từ điều khiển đến xử lý thông tin vì vậy càng thấy vai trò của nó
1.3 Bộ vi điều khiển vμ ứng dụng của bộ vi điều khiển trong hệ PLC
Trong thời đại công nghệ thông tin và ứng dụng mạnh mẽ của nó vào đời sống và kỹ thuật thì những kiến thức về vi điều khiển (Micro Controller) và ứng dụng của nó càng trở nên cần thiết
1.3.1 Giới thiệu tổng quan về bộ vi điều khiển
1.3.1.1 Định nghĩa vi điều khiển
Bộ vi điều khiển MC (Micro Controller) là một mạng tích hợp rất cao trên một chip và có thể lập trình được dùng để điều khiển hệ thống
Bộ vi điều khiển suất hiện từ việc đưa bộ VXL vào quá trình điều khiển vì vậy có thể hiểu bộ vi điều khiển như bộ vi xử lý song song sức xử lý thường không lớn như những bộ vi xử lý lớn
Khi nghiên cứu vi điều khiển ta quan tâm đến các vấn đề như sau:
Nguyên lý hoạt động của bộ vi điều khiển như một bộ vi xử lý
Với mỗi một bộ vi điều khiển ngoài các phần tử phụ như các rắc cắm các mạch đệm và lâng mức điện áp cho phù hợp yêu cầu thì với mọi hệ vi điều khiển
đều chứa các phần tử cơ bản như sau:
- Chíp vi xử lý ở đây diễn ra các quá trình xử lý thông tin như các phép toán số học và logic, các thao tác vào ra dữ liệu mọi quá trình này theo một
Trang 8chương trình đã được lạp sẵn để tạo ra quan hệ giữa đầu vào và đầu ra theo yêu cầu
- ROM (Read Only Memory) là một bộ nhớ chỉ đọc thường lưu trữ hệ điều hành để giúp chíp vi xử lý tiến hành các thao tác khởi tạo khi dừng và 1 số quá trình vào ra dữ liệu
- RAM (Ramdom Access Memory) là bộ nhớ vừa có khả khả năng đọc và ghi với bộ nhớ này thường dùng lưu trữ dữ liệu trong quá trình làm việc hoặc có thể dùng RAM như một ROM khi đó các thao tác chung nhập vào RAM như việc đọc chương trình ở ROM
Sơ đồ của một hệ vi điều khiển với các phần tử chính như sau:
Ban đầu khối tạo vi xử lý đọc chương trình trong ROM đó là chương trình
điều hành nó quét và kiểm tra toàn bộ hệ thống và đưa trạng thái cả hệ ở trạng thái sẵn sàng rồi chạy chương trình chính khi đó sẽ có quá trình quét lấy tín hiệu vào theo yêu cầu của chương trình rồi tiến hành xử lý, gia công để đưa ra điều khiển các thiết bị theo yêu cầu Các tín hiệu điều khiển này có thể là dạng số
được lưu trữ bằng một vi mạch đệm chốt và có thể chuyển mức điều khiển theo yêu cầu Nếu đối tượng điều khiển là tín hiệu tương tự thì từ tín hiệu số qua bộ chuyển đổi D/A tạo ra tín hiệu tương tự làm tín hiệu điều khiển
RAMd
aa
d
RoM ad
Cổng truyềnnối tiếp VXL
Trang 9Tương tự như đầu ra, đầu vào cũng có thể chuyển mức chuẩn vì thường các tín hiệu số lấy từ Sensor logic vì yêu cầu truyền xa nên có mức điện áp
không phù hợp với yêu cầu làm việc của vi xử lý nếu đầu vào là một tín hiệu tương tự thì cần một bộ biến đổi A/D để đưa tín hiệu số vào vi xử lý
Như vậy vi điều khiển như một máy tính mà ứng dụng của nó là tạo ra các tín hiệu điều khiển hệ thống bằng chương trình phần mềm
1.3.1.3 ứng dụng của vi điều khiển
Sự lớn mạnh không ngừng của các thiết bị vi điều khiển (chip xử lý trung tâm) phần nào nói lên vai trò quan trọng của hệ vi điều khiển trong thực tế Vào những năm 1970 do sự phát triển của kỹ thuật vi điện tử dựa trên kỹ thuật MOS (Metal Oxire Semicon Ductor) với độ tích hợp ngày càng cao Vi mạch MSI (Mundium Size Integration) có độ tích hợp cỡ 103 Tranzito trên một chíp, vi mạch LSI (Large Size Integretion) có độ tích hợp cỡ 104 Trangito trên một chíp
và vi mạch VLSI (Verry LSI) có độ tích hợp 105 Tranzito trên chíp nhưng số bit
xử lý còn nhỏ Năm 1971 bộ vi xử lý Intel 4004 loại 4 bit ra đời có chứa 2250 Tranzito đến năm 1975 hãng Intel có ra đời chíp xử lý 8 bit 8080 và 8085 Năm
1978 hãng Intel cho ra đời vi xử lý 16bit 8086 có 29.000 Tranzito và hãng
Motorola cho ra đơì vi xử lý 68.000 với 70.000 Tranzito và vi xử lý 32bit của Henlet packand có 40.000 Tranzito
Vậy từ năm 1947 đến năm 1984 số Tranzito tích hợp trên một chíp đã tăng
100 lần Đến năm 1983 hãng Intel cho ra vi xử lý 8286 dùng cho máy tính AT (Advaned Tecchnology) dùng các đường I/0 16bit và có 24 đường địa chỉ và không gian nhớ địa chỉ thực là 16MB và năm 1987 vi xử lý 80386 xử lý 32bit năm 1989 hãng Intel cho ra đời chip xử lý 80486 phát triển trên cơ sở 80386 có thêm bộ nhớ ấn và mạch tính toán dấu phẩy động
Năm 1992 Intel cho ra 80586 còn gọi là Pentium 64bit có 4 triệu Tranzito Các bộ vi xử lý này phát triển theo hướng ngày càng tăng chức năng và độ tích hợp
Từ các con số trên ta thấy được sự phát triển mạnh mẽ lĩnh vực vi điều
Trang 10ứng dụng của bộ vi điều khiển rất rộng rãi trong các thiết bị thông minh bằng việc lập trình tạo chương trình điều khiển vì vậy mà tính mềm dẻo của nó rất cao, thay đổi chương trình điều khiển đơn giản đặc biệt với các bộ đếm thời gian lập trình được càng tăng tính ứng dụng của nó
Trong công nghiệp dùng hệ vi điều khiển trong cánh tay robôt, các hệ thống điều khiển dây truyền hay tổng hợp thống kê các thông tin của quá trình sản xuất nhà máy hay dùng trong việc bảo vệ và tự động điều khiển các Camera quan sát
Việc kết hợp giữa hệ vi điều khiển và các cảm biến tạo nên các hệ điều khiển thông minh được ứng dụng trong các máy giặt, quạt gió, điều hoà nhiệt dộ,
đầu đĩa, ti vi, điện thoại di động…
Đặc biệt có thể tiêu chuẩn hoá phần cứng mà ứng dụng trong công nghiệp sản xuất hàng loạt
Vậy ứng dụng của thiết bị vi điều khiển là rất phong phú trong mọi lĩnh vực nhờ khả năng lập trình cao của thiết bị
1.3.2 ứng dụng bộ vi điều khiển trong PLC
Vi điều khiển trong bộ PLC là hạt nhân điều hành và kiểm soát mọi thao tác từ đọc dữ liệu đầu vào rồi xử lý và điều hành quá trình đưa dữ liệu ra Thiết bị PLC được tạo lên từ hệ vi điều khiển và các mạch điện chốt, chuyển mức điện áp
và một cổng truyền RS232 để đọc ra và đưa vào chương trình điều khiển Như vậy bộ vi điều khiển trong PLC quyết định mọi sự hoạt động của PLC
Kết luận: ở phần I này chúng ta đã đi tìm hiểu một số khái niệm chung và
một số kiến thức có liên quan tới PLC và bộ vi điều khiển Để tìm hiểu và xây dựng cụ thể bộ vi điều khiển và thiết bị PLC sẽ được đề cập ở phần sau
Trang 11PhÇn II:
GIíI thiÖu hä vi ®iÒu khiÓn mcs-51
Trang 12
Vi điều khiển 8031 có những tính chất đặc trưng như: Đơn vị xử lý trung tâm 8bit đã được tối ưu hoá để đáp ứng các chức năng điều khiển
- Khối logic xử lý theo bit thuận thiện cho các phép toán Boolear
- Bộ tạo giao động giữ nhịp bên trong ( đến 12 MHZ)
- Tập lệnh rất phong phú
- Giao diện nối tiếp có khả năng hoạt động song song đồng bộ (UART) 16(32) đường dẫn vào/ra 2 hướng và từng đường dẫn có thể được định địa chỉ 1 cách tách biệt
- Năm nguồn ngắt với hai mức ưu tiên
- Dung lượng bộ nhớ chương trình bên ngoài ( ROM) có thể đến 64 KB
- Dung lượng bộ nhớ dữ liệu ( RAM ) bên ngoài đến 64KB
- Dung lượng bộ nhớ RAM trong 128byte
- Hai bộ đếm định thời 16 bit
- Bus và khối định thời tương thích với các khối ngoại vi của bộ vi xử lý 8085/88
- Tất cả các vi điều khiển của dòng vi điều khiển MCS - 51 đều có chung
bộ lệnh Nếu độ lớn của chương trình vừa trong một chip ROM và nếu Ram trong đầy đủ thì vi điều khiển 8031 không yêu cầu thêm logic để thi hành kết thúc điều khiển hệ thống
Trang 132.1 Cấu tạo chung của họ vi xử lý 8031
Vi xử lý 8031 là vi xử lý thuộc họ 8051 do hãng Intel chế tạo có sơ đồ chân chuẩn nh− sau:
*
1 40 2 39
3 38
4 37
5 36
6 35
7 34
8 33
9 32
Vcc P0.0 ADO P0.1 AD1 P0.2 AD2 P0.3 AD3 P0.4 AD4 P0.5 AD5 P0.6 AD6 P0.7 AD7
EA / Vpp ALE / PROG PSEN P2.7 A15 P2.6 A14 P2.5 A13 P2.4 A12 P2.3 A11 P2.2 A10 P2.1 A 9 P2.0 A 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.6 P1.6 P1.7 RST RXD P3.0 TXD P3.1 INTO P3.2 INT1 P3.3
TO P3.4 T1 P3.5
WR P3.6
RD P3.7 XTAL2 XTAL1 Vss
MCS 8031 DIP40
Trang 1440 Vcc Nguån nu«i +5V
Trang 15
2.2 CÊu tróc bªn trong cña 8031
+ Thanh ghi tÝch lòy ( kÝ hiÖu lµ A)
+ Thanh ghi tÝch luü phô (B) dïnngcho phÐp nh©n vµ chia
+ §¬n vÞ logic (ALU: Arithmetic Logical Unit)
+ Tõ tr¹ng th¸i ch−¬ng tr×nh ( PSW: Progam Status Word)
Ram trong
128 byte ram
thanh
ghi sfr
Trang 16+ Con trỏ ngăn xếp (SP) cũng như con trỏ dữ liệu để định địa chỉ cho bộ nhớ dữ liệu ngoài
+ Ngoài ra ở đây còn có: Bộ đếm chương trình (PC), bộ giải mã lệnh, bộ
điều khiển thời gian và logic
Đơn vị xử lý thông tin nhận trực tiếp xung nhịp từ bộ tạo dao động được lắp thêm vào, linh kiện phụ trợ có thêm là một khung dao động bằng vật liệu gốm hoặc một cộng hưởng bằng thạch anh
Chương trình đang chạy có thể dừng lại nhờ một khối logic ngắt ở bên trong Các nguồn ngắt có thể là: Các biến cố ở bên ngoài, sự tràn bộ đếm/ định thời hoặc cũng có thể là giao diện nối tiếp
Bộ vi xử lý 8031 nhận được chương trình điều hành của nó từ một bộ nhớ chương trình bên ngoài, 8031 có 128 bytes RAM bên trong để có thể xắp xếp các dữ liệu và thông tin điều khiển 8031 có 2 bộ định thời 16 bit, chúng cũng
được xử dụng như là bộ đếm sự kiện
8031 có 4 cổng rộng 8 bit, độc lập với nhau, cổng P.0 dùng để truyền nửa dưới của các địa chỉ và cũng dùng cho các dữ liệu 8 bit Cổng P.2 để truyền nửa trên của các địa chỉ ở cổng P.3 còng có thêm các đường dẫn điều khiển dùng để trao đổi tin với bộ nhớ ngoài, để đấu nối giao diện nối tiếp cũng như các đường dẫn ngắt bên ngoài
Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ, làm việc độc lập với nhau Bằng cách đấu nối với các bộ đệm thích hợp, ta có thể hình thành một cổng nối tiếp RS - 232 đơn giản Tốc độ truyền qua cổng nối tiếp
có thể được đặt trong một vùng rộng và được ấn định bằng một bộ định thời
2.3 Hoạt động với bộ nhớ chương trình bên ngoμi của VXL 8031
Hình vẽ sau chỉ ra một sơ đồ nguyên tắc cấu trúc một mạch điện dùng với
bộ VXL 8031 và bộ nhớ chương trình bên ngoài cùng vớu bộ chốt ( latch) 8 bit
Trang 17
ROM: Read Only Memorry
Một vài vi xử lý họ MCS 8051 có nhớ ROM trong,nhưng 8031 không có bộ nhớ chương trình bên trong do đó hoạt động được thì 8031 phải làm việc với bộ nhớ chương trình ngoài(ROM ngoài) Khi làm việc với bộ nhớ chương trình
ngoài chân EA của vi xử lý 8031 phải được nối Mass.VXL8031 có thể địa chỉ
hoá được 64KB bộ nhớ chương trình ngoài
Khi lấy dữ liệu từ ROM vi xử lý 8031 thực hiện các bước sau:
- Đưa địa chỉ byte thấp (A0 ữ A7) lên bus dữ liệu
- Chốt các địa chỉ bằng mạch ngoài Việc này thực hiện bằng cách lập xung chốt qua chân ALE cho mạch chốt ngoài
Đưa địa chỉ byte cao đến ROM (nếu cần) cho phép ROM đưa dữ liệu lên bus dữ liệu Khi đọc dữ liệu từ ROM vi xử lý sẽ đưa chân PSEN suống mức thấp
Vi xử lý 8031 có thể địa chỉ hoá được 64KB bộ nhớ chương trình ngoài nên
ta có thể cho ROM 64KB Điển hình là loại 2764 gồm các chân như sau:
- A0 ữ A12 là các chân địa chỉ
- D0 ữ D7 các chân dữ liệu
- OE (Out Enable) chân cho phép dữ liệu ra khi chân OE ở mức thấp
thì ROM cho dữ liệu lên bus dữ liệu của vi xử lý
Trang 18có bộ nhớ dữ liệu bên ngoài, tần số ALE cũng là hằng số ( OSC/6) Tín hiệu ALE trong trường hợp này có thể sử dụng làm tín hiệu giữ nhịp cho các mạch bên ngoài
Trong chu trình ALE được kích hoạt ở mức Hight, bộ VXL đặt ở trong
đường dẫn địa chỉ phía dưới để truy nhập lên bộ nhớ chương trình bên ngoài lên Bus chung dùng cho dữ liệu và địa chỉ Sau đó khi có sườn dốc xuống trên xung tín hiệu ALE thì nội dung của địa chỉ thấp này được chuyển vào bộ nhớ trung gian
Trang 19Bằng việc xắp xếp các địa chỉ phía dưới vào Bus dữ liệu, các đường dẫn
địa chỉ A8 đến A15 được xếp vào cổng P2 mức cuả các đường dẫn này giữ nguyên
ổn định cho đến khi kết thúc chu trình truy nhập lệnh
Khi xung tín hiệu của ALE có đoạn dốc xuống thì bộ VXL đặt đường dẫn
điều khiển PSEN của nó vào mức Low Sau một vài chu trình giữ nhịp, bộ nhớ chương trình bên ngoài cần phải sắp xếp các dữ liệu( các lệnh) của nó lên Bus dữ liệu và Bus địa chỉ chung Sau đó bằng sườn dốc lên của PSEN bộ VXL đón nhận các dữ liệu đang được xếp ở cổng P0
2.5 Quá trình truy nhập lên bộ nhớ dữ liệu của VXL 8031
Hình vẽ dưới đây minh hoạ diễn biến của một quá trình truy nhập để đọc
bộ nhớ dữ liệu bên ngoài:
Giống như khi đọc bộ nhớ chương trình bên ngoài, trước hết 8 đường dẫn dẫn 8 địa chỉ thấy ở cổng P0 và được xếp lên Bus chung dùng cho dữ liệu và địa chỉ thấp để chuyển vào bộ nhớ trung gian dùng cho địa chỉ bằng sườn dốc xuống cuẩ tín hiệu ALE tiếp theo là sự kích hoạt của đường dẫn RD, điều khiển quá trình đọc dữ liệu bên ngoài Ngay trước khi đường dẫn RD trở về với mức High,
bộ xử lý đón nhận các dữ liệu đang được xếp ở bus Do đó, với nhiều ứng dụng
đường dẫn RD được nối tiếp hoặc qua một bộ giải mã địa chỉ với chân OE của thiết bị ngoại vi
A8 A15 P2
P0
RD
ALE
Trang 20VXL 8031 nhận biết một quá trình truy nhập dữ liệu bên ngoài 8 và 16 bit, khi truy nhập dữ liệu 8 bit, nội dung của cỏng P2 giữ nguyên không thay đổi giống như khi viết, các địa chỉ được truy nhập được xuất ra Bus chung dùng cho dữ liệu và địa chỉ, từ đó suy ra rằng một vùng địa chỉ lớn nhất là 256 Byte có thể trao đổi được Còn khi sảy ra quá trình truy nhập 16 bit, bộ xử lý xuất ra 8 bit địa chỉ giá trị cao hơn qua cổng P2 Bằng cách này có thể truy nhập trực tiếp lên bộ nhớ dữ liệu bên ngoài đến 64 KB
Hình vẽ giản đồ sau đây biểu diễn diễn biến của một quá trình viết lên bộ nhớ dữ liệu bên ngoài của VXL 8031
Việc sắp xếp các địa chỉ giá trị thấp A0 đến A7 diễn ra giống như trong quá trình truy nhập để đọc, tiếp theo các dữ liệu cần viết được xuất ra cổng P0 Một xung Low được đặt lên đường dẫn WR Thông thường thì khi xuất hiện sườn dốc lên ở đường dẫn tín hiệu này, khối ngoại vi được nối vào Bus dữ liệu sẽ đón nhận các thông tin được sắp xếp trên Bus dữ liệu
Với quá trình truy nhập để viết, giống như khi đọc các quá trình truy nhập
8 hoặc 16 bit lên thiết bị ngoại vi bên ngoài là hoàn toàn có thể Khi truy nhập 8 bit, cổng P2 cũng giữ nguyên không thay đổi, trong khi ở quá trình truy nhập 16 bit các địa chỉgiá trị cao hơn được sắp xếp
Khi hoạt động với bộ nhớ bên ngoài, các cổng 0,2 và đôi khi cả cổng 3
đều được sắp xếp dùng cho việc định địa chỉ và truyền dữ liệu, một bộ nhớ Ram
Trang 21ngoài sử dụng cùng Bus địa chỉ và Bus dữ liệu giống như bộ nhớ chương trình ở
ngoài nhưng chúng đươcn trao đổi với các đường dẫn điều khiển IOR và IOW , trong khi bộ nhớ chương trình ở ngoài được kích hoạt bằng tín hiệu PSEN
2.6 Vi điều khiển 8031
Phần trước ta đã tìm hiểu những nét cơ bản về họ VXL MCS -51 đại diện
lầ VXL 8031 Có thể nói bộ VXL 8031 của hãng INTEL là thế hệ kế tiêp của VXL 8048 sau khi đã được cải tiến và mở rộng thêm nhiều về phần cứng Hiện nay bộ VXL này là một bộ VXL được dùng thông dụng nhất Bộ VXL 8031 định
địa chỉ ô nhớ dữ liệu và chương trình đến 64 Kbyte Về phần cứng trong 8031
được bổ xung phải kể đến một giao diện nối tiếp và một bộ định thời bổ xung đã làm đơn giản hoá cả những ứng dụng phức tạp Ngoài ra tốc độ làm việc của
8031 cũng tăng lên Một bộ tạo tín hiệu giữ nhịp với tần số được xoá định bởi bộ cộng hưởng thạch anh đấu bên ngoài, xác định độ làm việc của VXL Các lệnh
được thực hiện tới mức tần số bằng 1/12 tần số riêng của bộ dao động thạch anh Khi tần số riêng của bộ dao động thạch anh bằng 12 MHz thì một lệnh một byte cần đúng một Micro giây Khi các lệnh có thạm số cần tra cứu trong bộ nhớ chương trình thì cần có thời gian dài gấp đôi
2.6.1 Bộ đếm chương trình của 8031
Bộ đếm chương trình được dùng để chỉ đếm byte lệnh tiếp theo sẽ được
đọc Nó không bị ảnh hưởng trực tiếp nhưng sẽ bị thay đổi bằng những lệnh rẽ nhánh như lệnh Jump hoặc Call Nó cũng có thể dùng như địa chỉ cơ sở cho chỉ
số địa chỉ khi đọc từ bộ nhớ chương trình
Khối Ram trong của 8031từ [ 0h 1Fh] được dùng cho các thanh ghi C 4 bank với 8 thanh ghi trong mỗi Bank đó từ R0 đến R7
Bank thanh ghi 0: Từ 00h đến 07h ( R0 dến R7)
Bank thanh ghi 1: Từ 08h đến 0Fh
Bank thanh ghi 2: Từ 10h đến 17h
Bank thanh ghi 3: Từ 18h đến 1Fh
Trang 22Để chọn địa chỉ các thanh ghi, đầu tiên các thanh ghi Bank phải được kích hoạt (Active) Việc lựa chọn được làm bởi cờ trong từ trạng thái chưong trình PSW Sau khi đã được chọn thanh ghi 1 được kí hiệu là RI
Ví dụ:
Mov a , R5 sẽ chuyển nội dung thah ghi số 5 vào thanh ghi A, thanh ghi đó phụ thuộc vào thanh ghi Bank hiện tại được chọn, có thể là byte số 5, 0Dh, 15h hoặc 1Dh của Ram trong Các thanh ghi Bank thường được dùng dành cho chương trình con ( Subroutine) hoặc chưong trình con phục vụ ngắt ( Interup Service Routine)
2.6.2 Những thanh ghi chức năng đặc biệt: SFR ( Special Function Registers)
Trong phần trên của vùng địa chỉ Ram bên trong của VXL 8031 có đặt vô
số các thanh ghi có chức năng đặc biệt ( SFR) để qua đó có thể trao đổi với các
bộ phận ngoại vi ở bên trong của bộ VXL 8031
SFR bao gồm các thanh ghi dữ liệu vầ các thanh ghi điều khiển chúng nằm trong các cổng, time, hoặc là các thanh ghi điều khiển ngắt
Cổng nối tiếp được điều khiển bởi SFR Scon, trong khi dữ liệu vào ra cổng này đi qua thanh ghi SFR SBUF Những bit riêng lẻ của Scon xác lập những chế
độ khác nhau của cổng nói tiếp Scon có thể được xem như thanh ghi điều khiển
và SBUF được gọi là thah ghi dữ liệu
SFR có byte địa chỉ trong khoảng ( 80h FFh) ( tiếp theo phần địa chỉ của Ram trong từ 00h 07h như đã nói ở trên) 8031 có thể truy nhập Ram và SFR bằng chế độ địa chỉ gián tiếp thanh ghi
Ví dụ:
Mov A,80h: Chuyển giá trị lưu trữ trong SFR 80h vào thah ghi A Mov A, @ RO: RO đã được đặt 80h, sẽ chuyển nội dung của Ram vào trong thah ghi A
SFR bao gồm cả thanh ghi A, thanh ghi B và từ trạng thái chương trình PSW bao gồm cả cờ hệ thống như cờ Carry có 2 bit để kích hoạt thanh ghi Bank Sau đây là danh sách các thanh ghi có chức năng đặc biệt SFR của 8031:
Trang 23Stt Register Address Mnemonic Internal
6 Timer/ Counter Control TCON 88h
7 Timer/ Counter Low Byte TLO 8Ah
8 Timer/ Counter Mode Control TMOM 89h
9 Timer/ Counter 1 Low Byte TL1 8Bh
10 Timer/ Counter 0 High Byte TH0 8Ch
11 Timer/ Counter 1 High Byte TH1 8Dh
18 Interrupt Priority Control IP B8h
Trang 242.6.3 RAM trong của 8031
RAM trong của 8031 bao gồm cả các thanh ghi và cácc thanh ghi có thể lập trình và xoá từng bit như là Ram đa mục đích Ram được dùng như là vùng làm việc đa năng Ram on chip có địa chỉ từ 00h đến 7Fh
Bộ VXL 8031 quản lý các địa chỉ tách rời nhau dùng cho bộ nhớ Ram bên trong bằng 128 byte ( ở 8032 là 256 byte), cho bộ nhớ chương trình và bộ nhớ dữ liệu ở bên ngoài ( nếu như có đầu vào) Cùng địa chỉ đó có thể xuất hiện đồng thời 3 lần Một đặc điểm của 8031 là khả năng truy nhập những lệnh đặc biệt lên các bit riêng lẻ cho bộ nhớ Ram bên trong Vùng bộ nhớ Ram 29h đến 2Fh được
sử dụng 1 cách tự do là có thể truy nhập tới bằng các địa chỉ bit 0 đến 7Fh
Bộ nhớ Ram bên trong cho phép xếp đặt trong vùng phía rưới 4 dãy thanh ghi độc lập với mỗi dãy 8 thanh ghi Sau mỗi lần đặt lại ( Reset), ngăn xếp bắt
đầu ở địa chỉ 08 và tăng dần lên phía trên với mỗi lần gọi chương trình con Để
có thể xử dụng những Bank thanh ghi cao hơn, con trỏ ngăn xếp phải đượ đặt lên một giá trị thích hợp ở chỗ bắt đầu của một chương trình
Chỉ thị Mov chuyển dữ liệu đến Ram hoặc từ Ram đi cho phép dùng cả 2 chế độ trực tiếp và gián tiếp địa chỉ
Ví dụ:
Mov A,35h; Sẽ chuyển nội dung của byte 35h của Ram trong của thanh ghi A
Lệnh của 8031 sử dụng kí hiệu # để chỉ ra đó là hằng số
Mov A,# 35h; Chuyển 35h vào thanh ghi A
Mov A,@ RO; Chuyển nội dung cuả byte nhớ ở Ram trong có địa chỉ
được chứa trong thanh ghi Ro vào thanh ghi A.( Các thanh ghi được dùng có thể
từ 0 đến 7)
8031 có 128 bye bộ nhớ, do đó có thanh ghi Ro chứa giá trị từ 00h đến 7hH Và chỉ có thanh ghi R0,R1 của những bank thanh ghi được chọn hiện thời
có thể dùng chế độ gián tiếp địa chỉ
Bộ nhớ Ram bên trong của 8031:
Trang 26Một điều chú ý nữa là mặc dù tất cả các thao tác đọc mà đọc giá trị từ chân cổng, Có một vài thao tác vẫn đọc ngầm đọc giá trị của cổng chốt, gọi là thao tác Read Modify Wite
Ví dụ:
INC P1 sẽ đọc nội dung cuả cổng, tăng giá trị và ghi kết quả trở lại cổng Những thao tác đó được tiến hành hoàn toàn bằng phần cứng những chỉ thị read Modify Wite lầ ANL, ORL, XRL khi mà toán hạng đích là cá bit của cổng SFR, còn thao tác JBC và CPL được dùng khi toán hạng đích là các bit của cổng SFR INC, DEC, MOV, CLR và SET, DJNZ được dùng khi toán hạng thứ nhất là cổng SFR
Ví dụ:
MOV P1.0,c chuyển giá trị của cờ Carry vào bit 0 của Port 1 thao tác này
được tiến hành bằng phần cứng, chia làm 2 phần: Port 1 được đọc từ chốt sau đó bit 0 của nó sẽ bị thay đổi và sẽ được ghi trở lại chốt
Tổng cộng có 4 cổng, nhưng khi dụng bộ nhớ ở ngoài thì 3 cổng trong số
đó được sử dụng hoàn toàn hoặc một phần Chỉ còn lại cổng P1 có 8 lối ra vào
được sử dụng tự do Chúng được gọi là các cổng giả hai hướng (Quasi bidirectional), bởi vì trạng thái tĩnh của cổng này là cao và có điện trở cao, ngoài ra chúng có thể đóng vai trò như các lối vào ở trạng thái thấp chúng có điện trở thấp và có thể đệm trực tiếp cho các LED Cổng 0,2,3 có các chức năng thay đổi, những chân cổng này có thể được dùng như là những đường vào ra số liệu chung, hoặc
có thể dùng cho những chức năng thứ hai của chúng Chức năng thứ hai của cổng
0 và 2 là giao tiếp với bộ nhớ ngoài Cổng 3 có các chức năng thứ hai như sau: Bit Alternate Function Mnemonic/ Designation
0 Serial Input Port RxD
1 Serial Output Port TxD
2 External Interrupt 0 INT 0
3 External Interrupt 1 INT 1
4 Timer/ Counter 0 External Input T0
5 Timer/ Counter 1 External Input T1
Trang 276 External Memory Write Strobe WR
7 External Memory Read Strobe RD
Để tiến hành lựa chọn các chức năng thứ một hay hai của các cổng thì các SFR tương ứng phải được thiết lập
2.6.5 Cổng nối tiếp của 8031
Giao diện nối tiếp ở bên trong của VXL 8031 cho phép ghép nối bộVXL với một máy tính PC một cách rất đơn giản Bởi vì giao diện được thực hiện nhờ
bộ UART hoạt động độc lập( Autonomous), nên bộ VXL hoàn toàn tự do đối với các nhiệm vụ khác Cổng nối tiếp được điều khiển với thanh ghi có chức năng
đặc biệt (SFR) SCON Để khởi tạo giao diện thanh ghi SCON cần phải được nạp bằng các tham số thích hợp
SMO, SM1: Các bit chế độ nối tiếp 1 và 2 chọn loại hoạt động
Chế độ 0: Cổng nối tiếp dùng như một thanh ghi dịch và tốc độ dịch bằng một chu kỳ máy hay bằng 1/12 dao động tinh thể thạch anh
Chế độ 1: Dùng Timer 1 để phát ra tốc độ Baud để truyền và nhận 8 bit dữ liệu
Chế độ 2: Dùng cổng nối tiếp 9 bit với tốc dộ baud là 1/32 hay 1/64 dao
động tinh thể thạch anh
Chế độ 3: Dùng nối tiếp 9 bit với tốc độ baud được quyết định bởi Timer 1 SM2 dùng trong chố độ 2 hoặc 3 để đa xử lý được dễ dàng
Trang 28REN: Được xác lập bằng phần mềm để cho phép nhận nối tiếp nếu bị xoá dữ liệu sẽ nhận theo từng khối
TB8: Được lập và xoá bằng phần mềm và bit thứ 9 sẽ được truyền trong Mode 2 và Mode 3
RB8: Phụ thuộc vào chế độ hoạt động của chế độ làm việc Nếu đang làm việc ở chế độ 2 hoặc 3 thì sẽ nhận 9 bit dữ liệu và bit cuối cùng được đưa vào RB8
TI: Được xác lập bởi phần cứng để báo hiệu việc truyền đã kết thúc Nó phải được xoá bằng phần mềm để cho phép truyền dữ liệu tiếp theo
RI: Được xác lập bằng phần cứng để báo hiệu việc nhận đã hoàn thành Nó cũng được xoá bằng phần mềm lúc đọc byte dữ liệu từ SBUF để cho phép nhận dữ liệu tiếp theo
Thanh ghi dữ liệu của giao dịch nối tiếp là SBUF (SFR 99h) dữ liệu vào và
ra cổng nối tiếp đều đi qua SFR SBUF Thực tế phía sau thanh ghi SBUF là hai thanh ghi cụ thể là thanh ghi dữ liệu truyền và thanh ghi dữ liệu nhận Quá trình
được truyền mở đầu bằng cách đơn giản bằng cách truy nhập để ghi lên thanh ghi SBUF Ngược lại, một byte đã được nhận có thể được đọc từ SBUF Trong chế độ 9 bit, mỗi một bit thứ 9(TB 8 hoặc TR 8) trong thanh ghi SMOD cần phải
được chú ý đến người ta hay dùng chế độ hoạt động loại 1 và như vậy có 1 bộ UART 8 bit, tốc độ Baud bằng bộ định thời 1 Dòng dữ liệu 8 bit được mở đàu bằng 1 bit Start kết thúc bằng 1 bit Stop Tốc độ Baud bằng 1/16(SMOD =1) hoặc 1/32 (SMOD=0) của tốc độ tràn của bộ định thời 1 SMOD là bít có giá trị cao nhất trong thanh ghi SCON ( SFR 87h)
SMOD: 1 bằng tốc độ Baud thấp, bằng 0 tốc độ baud cao
GF1, GF2: Cờ được sử dụng tự do
PD: Chế độ Power Down (chỉ ở loại CMOS 80C31)
IDL: Chế độ chạy không (IDLE)
2.6.6 Timer/ Counter của 8031
Việc tạo ra một tín hiệu giữ nhịp dùng cho giao diện nối tiếp đòi hỏi trước hết là việc lập trình cho bộ định thời 1 8031 có 2 Timer/ Counter, cả hai bộ định
Trang 29thời này đều có hai thanh ghi đếm 8 bit trên mỗi bộ Các thanhghi này có thể
được nạp và được đọc ra Time / Counter 0 là thanh ghi TH0 và TL0, Timer/ Counter 1 là TH1 và TL1 Khi hoạt động, mỗi khi có xung đột nào thì số đếm xong lưu trong 1 hoặc 2 chân của cổng 3 (XTAL1, XTAL2) Số xung hiện tại của Timer/ Counter có thể đọc từ TL0 và TL 1 hoặc TH0 và TH1 Timer/Counter cũng phát ra ngắt với điều kiện là những ngắt đó không bị IE chắn, khi bộ đếm
bị tràn ( và lại quay về 0) thì ngắt được phát ra Trạng thái của các ngắt đó được quan sát qua SFR TCON
Hoạt động của Timer/ Counter được điều khiển bởi bộ xung ngẫu nhiên từ nguồn tới thanh ghi đếm dữ liệu Nguồn dữ liệu sẽ tới thanh ghi dữ liệu của Timer 0 nếu điều kiện là (Gate hoặc INTO) và TR0 Gate là bit điều khiển Timer 0 của TMOD 8031 coi bit điều khiển là Gate Tuy nhiên khi Timer/ Counter hoạt động trong lúc Gate đang ở mức logic thấp thì sẽ giống như trên chứng tỏ bit điều khiển là Gate TR0 cũng là bit điều khiển của Timer 0 trong
Sơ đồ khối của Timer/Counter
Trang 30thanh ghi TMOD, INTO của 80331 ( chân 12 của 8031) Điều kiện trên đã chỉ rõ rằng những thanh ghi dữ liệu của Timer 0 đã được cập nhập nguồn khi bit điều khiển TR0 được thiết lập và cả bit điều khiển Gate bị xoá hoặc INT0 của 8031 ở mức 1
Thông thường người ta chia chế độ làm việc của bộ định thời ra làm 3 phần: + Nguồn vào
+ Điều khiển hoạt động
Bộ định thời 1 hoặc 0 đếm các xung nhịp bên trong của 8031 như là bộ
đếm liên tục tự do Vì thế nó được đưa vào như là một bộ định thời trong chế độ hoạt động loại 2 Khi đó cứ mỗi lần tràn thì một trạng thái đã được đặt trước bộ
đếm lại tái lập trong bộ đếm Mỗi một bộ đếm được khởi động qua bit TR của nó trong thanh ghi TCON, TCON cũng có chứa các cờ tràn của 2 bộ định thời và 4 bit điều khiển để điều khiển ngắt qua các chân INT và 0 INT 1
Đối với chế độ hoạt động như là máy phát tốc độ Baud, ở đây chỉ cần bit chạy ( Rn bit) TR1 phải được đặt Muốn thế phải định địa chỉ được tới bit là đạt tới được địa chỉ 8Eh Nhưng trước hết, khi bộ đếm được làm dừng thì tốc độ bộ chia tần cần phải được thiết lập ở loại hoạt động 2, byte bộ đếm có giá trị cao nhất TH1 có chứa giá trị nạp lại, giá trị mà cứ mỗi lần tràn lại được nạp vào thanh ghi bộ đếm Đối với vận tốc truyền 9600 Baud, ở bit SMOD đã được đặt cần có giá trị tần số bộ cộng hưởng thạch anh bằng 11,0592 MHz phải lựa chọn một số chia bằng 6
11059,2 KHz/12/6/16 = 9,6 KHz
Trang 31Khi nạp giá trị bộ đếm bằng 256 - 6 = 250 = FAh thì hệ số chia bằng 6 vì
bộ đếm ở đây đếm theo hướng tiến
Timer/ Counter có 4 chế độ hoạt động, hoạt động của cả 2Timer/ Counter
được quyết đinh bởi SFR TMOD 4 bit thấp của TMOD điều khiển 0,4 bit cao
của TMOD điều khiển Timer 1
TMOD Register(89h) :
Gate: Mỗi một bộ đếm được cho phép qua chân INTO hoặc INT1 Khi TR0
(RT1) của TCON được thiết lập Gate sẽ xoá Timer/ Counter hoạt động Nếu
Gate và TR0 ( TR1) cũng được thiết lập thì cho phépTimer/ Counter hoạt động
nếu INTO (IMT1) được kích hoạt Low
C/T (Counter/Timer Select): 0: Timer
Bộ đếm sẽ tăng khi xung vào TO ( T1) cổng 3 ở chế độ Timer mỗi khi có
xung ( qua) thứ 12 thì bộ đếm sẽ tăng
M1 và M0 : Chộn chế độ làm việc
0 0 : Mode 0 bộ đếm/ bộ phát thời gian 13 bit Trong chế độ này
ngắt được phát ra khi có 213 = 8192 xung vào
0 1 : Mode 1 bộ đếm/ bộ phát thời gian 16 bit Trong chế độ này ngắt được phát ra khi có 216 = 65536 xung vào
1 0 : Bộ đếm/ bộ phát thời gian 8 bit, tự động nạp lại khi bật nguồn
nuôi
1 1 : Mode 3 chỉ dùng cho bộ đếm 0 : Hai bộ đếm 8 bit tách rời
nhau
Trang 32TCON Register ( SFR 88h)
7 6 5 4 3 2 1 0
TF1: Cờ tràn dùng cho Timer 1 TF1 được thiết lập bằng phần cứng khi Timer/Counter bị tràn TF1 bị xoá khi có xử lý rẽ nhánh đến chương trình con, phục vụ ngắt, TF1 và IE1 có thể điều khiển bằng phần mềm để quyết định trạng thái của Timer 1
TR1: Đóng mạch Timer 1: Timer/Counter 1 không hoạt động khi bit này
bị xoá, bit này cần thiết được lập nhưng không đủ để cho phép Timer/Counter hoạt động TR1 điều khiển hoàn toàn bằng phần mềm
TF0: Cờ tràn dùng cho Timer 0
TR0: Đóng mạch Timer 0
IE1: Ngắt ở INT1 với kích chuyển bằng sường xung Được thiết lập bằng phần mềm khi ngắt ngoài được xác định, bit này sẽ bị xoá khi lệnh Return được thực hiện ( Return From Interrupt)
IT1: Cờ ngắt dùng cho INT1 Ngắt 1 ở ngoài nhận qua chân P3.3 của cổng 3 Xóa IT1 thì ngắt sẽ phát ra khi tín hiệu ngoài là thấp Nếu tín hiệu ngoài vẫn ở mức thấp INT1 sẽ được phát ra nếu INT1 bị xoá và sẽ không phát ra nếu INT1 được lập INT1 được điều khiển bằng phần mềm
IE0: Ngắt ở INT0 với kích chuyển bằng sườn xung
IT0: Cờ ngắt dùng cho INT0
2.6.7 Điều khiển ngắt
8031 có 5 ngắt: TF0, TF1, INT0, INT1 và kết quả của cổng nối tiếp TF0
và TF1 của các thanh ghi TCON tạo ra 2 ngắt, Timer/Counter tạo ra ngắt khi bộ
đếm bị tràn INT0 và INT1 tạo ra 2 ngắt ngoài, những ngắt đó do tín hiệu ngoài nhận được qua 2 chân P3.2 và P3.3 của cổng 3 Phần cứng điều khiển ngắt có thể lập trình để trả lời mỗi khi có sườn xuống của tín hiệu ngoài hoặc mức thấp của tín hiệu ngoài Sự lự chọn này sẽ quyết định bởi bit điều khiển INT0 và INT1 của SFR TCON Ngắt cuối cùng là từ cổng nối tiếp, cờ ngắt RT và TI của SCON kết
Trang 33hợp bởi cổng OR do đó cờ thấp có thể phát ra ngắt Đó là nhiệm vụ của 2 cờ TI
và RI để xác định nguyên nhân gây ra ngắt
Có 2 SFR điều khiển ngắt: Thanh ghi cho phép ngắt IE dùng để che các ngắt riêng lẻ và thanh ghi ưu tiên ngắt IP định ra những ngắt có ưu tiên Khi có 2 ngắt cùng được lập trình cùng một mức ưu tiên thì mức ưu tên sẽ như sau:
IE0 là ngắt có ưu tiên cao nhất sau đó là TF0, IE1, TF1 và RI, TI là thấp nhất Với điều kiện à không được chắn( Not Masked) VXL chấp nhận ngắt và rẽ nhánh chương trình đến nơi trong bộ nhớ chương trình được gọi bởi lệnh Lcall Trong trường hợp này từ trạng thái chương trình không được cất vào Stack Sau
đây là địa chỉ các Vectơ ngắt:
Interrupt Service Rountine Address Defal Priority
EX0 (Enable Extenal Interrupt 0): Được thiết lập bằng phần mềm để cho phép ngắt 0 ngoài, xoá về 0 là không cho phép
ET0 ( Enable Timer/Counter Interrupt 0): Thiết lập bằng phần mềm cho phép Timer/Counter tràn Interrupt 0, xoá về 0 là không cho phép
EX1: Được thiết lập bằng phần mềm để cho phép ngắt 1 ngoài, xoá về 0 là không cho phép
ET1: Thiết lập bằng phần mềm cho phép Timer/Counter tràn Interrupt 1, xoá về 0 là không cho phép
ES: (Enable Serial Port Interrupt ): Được thiết lập bằng phần mềm cho phép cổng nối tiếp ngắt 1, xoá về 0 không cho phép
Trang 34EA( Enable All): Khi bit này bị xoá tất cả các ngắt này đều bị xoá và khi
được lập sẽ cho phép phụ thuộc vào bit điều khiển
IP Register:
7 6 5 4 3 2 1 0
PX0 ( Priority of Enable Interrupt 0): Khi được thiết lập ngắt 0 ngoài nhận
được sẽ ở mức ưu tiên cao
PT0 ( Priority of Timer/Counter Interrupt 0 ): Khi bit này lập ngắt 0 ở ngoài Timer/Counter nhận được sẽ ở mức ưu tiên cao
PX1: Tương tự PX0 nhưng cho ngắt 1 ngoài
PT1: Tương tự PT0 nhưng cho ngắt 1 ngoài nhận được
PS: ( Priority of Serial Port Interrupt ): Ngắt cổng nối tiếp nhận được ở mức
ưu tiên cao khi bit này được lập
2.6.8 Bộ phát dao động
8031 có một bộ phát dao động dùng thạch anh bên ngoài Bộ tạo dao
động tần số giống như tần số của tinh thể thạch anh và được chia cho 12, nó có thể được dùng làm đầu vào của Timer
Dùng bộ phát dao động 12 MHz thì đầu vào của Timer sẽ là 1 MHz 8031
có 12 chu kỳ dao động trên một chu kỳ máy Nó có 255 thao tác những nhóm mã lệnh, tương đương 111 chỉ thị
Ví dụ:
Có 15 mã thao tác cụ thể phụ thuộc vào byte đích, byte nguồn và chế độ
địa chỉ Thêm vào đó, có 2 lệnh dịch chuyển bit và một lệnh dịch chuyển Word, lệnh đó dịch chuyển 16 bit vào con trỏ dữ liệu ( Data Poiter) Trong 255 mã thao tác đó,159 thao tác hết một chu kỳ máy, 51 thao tác cần 2 chu kỳ máy, 43 thao tác cần 3 chu kỳ máy và 2 thao tác cần 4 chu kỳ máy Trừ khi có nhiều thao tác chỉ cần có một chu kỳ máy, 8031 đã xem xét đến khả năng có thể thực hiện hàng triệu lệnh trong một giây Rất nhiều hệ thống 8031 dùng dao động tinh thể thạch
Trang 35anh 11,0582 MHz, Sở dĩ có sự lựa chọn này vì thực tế nó có thể phát ra tốc độ Baud rất cao Dao động tinh thể 11,0592 MHz tốc độ có thể lên tới 19200 Baud Sau khi xung Reset tác động, vi xử lý đ−ợc khởi tạo lại ta có nội dung của các thanh ghi đặc biệt (SFR) nh− sau:
Trang 36
2.6.9 Bản đồ của bộ nhớ
Khối nhớ trong khoảng {20h 2Fh} gồm 16 byte = 128 bit có thể đánh địa chỉ theo từng bit Một bit có một địa chỉ từ 0h đến 7Fh Bit 0 của 20 là bit địa chỉ
0 và bit 7 của byte 2Fh là bit địa chỉ 7Fh
6 Date Pointer High byte DPH 00h
15 Timer/Counter Control TCON 0000 0000b
16 Timer/Counter 0 Low Byte TL0 00h
17 Timer/Counter 0 High Byte TH0 00h
18 Timer/Counter 1 Low Byte TL1 00h
19 Timer/Counter 1 High Byte TH1 00h
Trang 37Ví dụ:
Mov C,13h chuyển nội dung boolean của bit 13h vào thanh ghi cờ Bit 13h
là bit số 3 của byte ở vị trí 22h của Ram trong Ta cũng có thể viết nh− sau: Mov C,22.3h cũng cho một kết quả Các SFR khác cũng có thể đánh địa chỉ theo từng bit, những bit địa chỉ đó nằm trong khoảng từ { 80h FFh}
Mov a, # 1; Chuyển 1 vào thanh ghi a
Mov PSW, # 0; Chọn Regiser Bank 0
Mov 0,# 1; Chuyển 1 vào thanh ghi 0 của thanh ghi Bank 0
- Chế độ địa chỉ trực tiếp ( Direct Addressing Mode) Trong chế độ này toán hạng nguồn và đích là các thanh ghi hoặc các SFR
80h 7Fh
FFh
Địa chỉ của các SFR
30h 2Fh
Sử Dụng tự do và ngăn xếp
00h
20h 1Fh
16 BYTE đánh địa chỉ theo bit
4 Bank thanh ghi 32 byte
Bản đồ bộ nhớ RAM trong 8031
Trang 38Mov PSW,#2 : Chọn thanh ghi Bank 2
Mov R0, a: Chuyển nội dung thanh ghi a vào R0
Mov R2,b: Chuyển nội dung thanh ghi B vào R2
- Chế độ địa chỉ gián tiếp thanh ghi Trong chế độ này toán hạng nguồn hay là đích là một ô nhớ có địa chỉ chứa trong một thanh ghi của thanh ghi Bank
đ−ợc chọn
Ví dụ:
Mov PSW, #0: Chọn thanh ghi Bank 0
Mov R0, #a:
Mov @ R0,#1: Chuyển 1 vào ô nhớ có địa chỉ chứa trong R0
- Chế độ địa chỉ số thanh ghi (Register Indexed Addressing Mode) Trong chế độ này toán hạng nguồn hay toán hạng đích đ−ợc lấy bằng cách cộng giá trị của thanh ghi a với địa chỉ cơ sở Địa chỉ cơ sở có thể là DPTR ( Data Poiter) hoặc PC (Progam Counter)
Ví dụ:
Mov DPTR, # 800h: Chuyển địa chỉ bảng cơ sở vào data
Mov a, #0 : Pointer
Mov a, @ + DPTR : a:= ( a+ DPTR),ROM
Ngoài những chế độ địa chỉ trên 8031 còn có các chế độ địa chỉ làm việc với Stack, làm việc theo từng bit và có lệnh hoán đổi từng bit của 1 byte
Ví dụ:
Mov SP, #SFR: Khởi tạo Stack Pointer
Trang 39Mov a, # 45h :
Push acc : Cất thanh ghi a vào Stack
Mov b, # 0 : Xoá thanh ghi B
Pop B : Chuyển nội dung từ định Stack (45h) vào thanh ghi B
Các lệnh hoán đổi của 8031 rất tiện lợi khi làm việc với các số BCD Nội
dung của thanh ghi a, Các thanh ghi khác có thể hoán đổi cho nhau mà không
cần biến trung gian
Ví dụ :
Mov a, # 0ah: Khởi tạo thanh ghi a
Mov b, # 0bbh: Khởi tạo thanh ghi a
Xch a,b : Hoán đổi a,b
Xch a,b : Trả lại giá trị cho thanh ghi a,b
Xch a,b : Hoán đổi 4 bit thấp của a,b
+ Tất cả các bit trong khoảng 20h đến 2Fh có thể đ−ợc xử lý đồng thời
từng byte hay từng bit và ta cũng có thể xử lý từng bit của cổng
74 Mov A, # Data 2 A: = dữ liệu
78 7F Mov R, # Data 2 R0 R7: = dữ liệu
76,77 Mov @R, # Data 2 R0,R1: = dữ liệu, bộ nhớ
Trang 402.7.2.2 Lệnh di chuyển dữ liệu
Lệnh Mã gợi nhớ Nhịp Chức năng
E8EF Mov A,R 1 A: = R0 R7
F8FF Mov A,R 1 R0 R7: = A
E6,E7 Mov A,@R 1 A: = (R0,R1), Ram trong
D6,F7 Mov @R,A 1 R0,R1: = A, Ram trong
F5 Mov adr,A 1 Adr:= A, Ram trong
E5 Mov A,adr 1 A: = Adr , Ram trong
A8AF Mov A,adr 2 R0 R7: = adr, Ram trong
888F Mov R,adr 2 adr: = R0 R7, Ram trong
86 87 Mov adr,@R 2 adr: = (R0,R1), Ram trong A6AF Mov @R,adr 2 R0,R1: = adr, Ram trong
86 Mov adrl, adr2 2 adrl: = adr2, Ram trong
C0 PUSH adr 2 Stack: = adr, Ram trong
D0 Pop adr 2 adr: = stack, Ram trong
E2,E3 Mov A, @R 2 A: =(R0,R1), Ram ngoài F2,F3 Mov @R,A 2 (R0,R1): = A, Ram ngoài
E0 Mov A, @DPTR 2 A: = DPTR, Ram ngoài F0 Mov @DPTR,A 2 DPTR: = A, Ram ngoài
93 MovC A@A+DPTR 2 A: = ( A+ DPTR), Rom
E3 Mov P3 A@A+PC 2 2 A: = (A + PC), Rom
- Lệnh hoán vị ( trao đổi dữ liệu):