Luận văn Điện năng kế điện tử giao tiếp máy tính

Là sinh viên thuộc ngành Điện tử, bản thân người làm đề tài từ lâu đã có mong muốn trước khi ra trường sẽ có cơ hội sử dụng những kiến thức đã học để tạo ra một sản phẩm có ích cho xã hội cũng như chính bản thân và đó cũng là dịp để đánh giá lại kiến thức đã học tập trong suốt quá trình rèn luyện trên giảng đường Đại học.

Luận văn tốt nghiệp có lẽ là cơ hội tốt nhất mà nhà trường đã tạo ra để bản thân người làm có dịp thử thách chính mình trước khi tiếp cận với thực tế.

Được sự gợi ý của thầy TRẦN SUM, người làm luận văn đã quyết định chọn đề tài “Điện năng kế điện tử giao tiếp máy tính”. Trước khi giao đề tài này thầy TRẦN SUM cũng đã hỏi thử có dám làm không vì đây là một đề tài mới. Lúc đó bản thân người làm cũng cảm thấy hơi lo nhưng cũng đã đồng ý nhận đề tài và chỉ biết là sẽ cố gắng hết sức mình.

“Điện năng kế điện tử” là một đề tài ứng dụng kĩ thuật điện tử trong thiết bị đo lường và hiển thị số nhưng đã nâng cao hơn một chút so với các thiết bị đo lường điện tử trước đây là có khả năng tính toán số liệu đã thu thập bằng phần mềm và giao tiếp được với máy tính. Điều này tạo nhiều thuận lợi cho việc sử dụng và điều khiển, và đây cũng là xu hướng chung của các thiết bị ngày nay.

Như vậy, khâu cơ bản của đề tài là đo lường các đại lượng điện bằng các phương pháp truyền thống nhưng vì các bộ phận xử lí phía sau là thiết bị số cho nên tuy là vẫn đo đạc các đại lượng đó nhưng phương pháp đã có khác đi chút ít nhằm làm tương hợp với thiết bị điện tử.

Khi đã có các đại lượng điện được đo đạc cụ thể thì phần công việc tiếp theo là do phần mềm chịu trách nhiệm xử lí thông qua một thiết bị có khả năng tính toán và xử lí dữ liệu đó có thể là một vi xử lí hoặc một vi điều khiển có sự kết nối với các thiết bị phụ trợ bên ngoài.

Đề tài do vậy đã có sự liên quan đến khá nhiều vấn đề lí thuyết, điều này đòi hỏi bản thân người làm phải cần phải tìm tòi và vận dụng.

Trong xu thế hiện nay là việc điện tử hóa các thiết bị phục vụ cho con người nhằm ngày càng đáp ứng được trọn vẹn yêu cầu của người dùng, do vậy bản thân người làm đề tài cảm thấy cần phải rèn luyện mình nhiều hơn nữa không chỉ trong luận văn tốt nghiệp ra trường mà một điều còn quan trọng hơn nữa là khi đã ra trường vẫn phải không ngừng phấn đấu.

 

doc86 trang | Chia sẻ: oanh_nt | Lượt xem: 915 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Luận văn Điện năng kế điện tử giao tiếp máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Bộ Giáo Dục và Đào Tạo Đại Học Quốc Gia Tp.Hồ Chí Minh Trường ĐH Sư Phạm Kĩ Thuật Khoa Điện Bộ Môn : Điện Tử NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP Sinh viên thực hiện : TRẦN ĐẠI NGHĨA Lớp : 95 KĐĐ MSSV : 95101099 Số điện thoại : 8854340 ( Tp.Hồ Chí Minh ). 1/ Tên đề tài : Điện Năng Kế Điện Tử Giao Tiếp Máy Tính 2/ Nội Dung Luận Văn Tốt Nghiệp : Tính toán các thông số kĩ thuật. Thiết kế phần cứng. Giới thiệu phần mềm. 3/ Các Bản Vẽ: Sơ đồ nguyên lí. 4/ Giáo Viên Hướng Dẫn : Thầy QUÁCH THANH HẢI 5/ Ngày Giao Nhiệm Vụ : 13 / 12 / 1999. 6/ Ngày Hoàn Thành Nhiệm Vụ : 28 / 2 / 2000. Giáo Viên Hướng Dẫn Kí Tên : _ _ _ _ _ _ _ _ _ _ _ _ _ Thông Qua Bộ Môn _ _ _ _ _ _ _ _ _ _ _ _ _ Ngày ….. tháng ….. năm 2000. _ _ _ _ _ _ _ _ _ _ _ _ _ Chủ nhiệm Bộ Môn _ _ _ _ _ _ _ _ _ _ Quách Thanh Hải _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ LỜI GIỚI THIỆU : Là sinh viên thuộc ngành Điện tử, bản thân người làm đề tài từ lâu đã có mong muốn trước khi ra trường sẽ có cơ hội sử dụng những kiến thức đã học để tạo ra một sản phẩm có ích cho xã hội cũng như chính bản thân và đó cũng là dịp để đánh giá lại kiến thức đã học tập trong suốt quá trình rèn luyện trên giảng đường Đại học. Luận văn tốt nghiệp có lẽ là cơ hội tốt nhất mà nhà trường đã tạo ra để bản thân người làm có dịp thử thách chính mình trước khi tiếp cận với thực tế. Được sự gợi ý của thầy TRẦN SUM, người làm luận văn đã quyết định chọn đề tài “Điện năng kế điện tử giao tiếp máy tính”. Trước khi giao đề tài này thầy TRẦN SUM cũng đã hỏi thử có dám làm không vì đây là một đề tài mới. Lúc đó bản thân người làm cũng cảm thấy hơi lo nhưng cũng đã đồng ý nhận đề tài và chỉ biết là sẽ cố gắng hết sức mình. “Điện năng kế điện tử” là một đề tài ứng dụng kĩ thuật điện tử trong thiết bị đo lường và hiển thị số nhưng đã nâng cao hơn một chút so với các thiết bị đo lường điện tử trước đây là có khả năng tính toán số liệu đã thu thập bằng phần mềm và giao tiếp được với máy tính. Điều này tạo nhiều thuận lợi cho việc sử dụng và điều khiển, và đây cũng là xu hướng chung của các thiết bị ngày nay. Như vậy, khâu cơ bản của đề tài là đo lường các đại lượng điện bằng các phương pháp truyền thống nhưng vì các bộ phận xử lí phía sau là thiết bị số cho nên tuy là vẫn đo đạc các đại lượng đó nhưng phương pháp đã có khác đi chút ít nhằm làm tương hợp với thiết bị điện tử. Khi đã có các đại lượng điện được đo đạc cụ thể thì phần công việc tiếp theo là do phần mềm chịu trách nhiệm xử lí thông qua một thiết bị có khả năng tính toán và xử lí dữ liệu đó có thể là một vi xử lí hoặc một vi điều khiển có sự kết nối với các thiết bị phụ trợ bên ngoài. Đề tài do vậy đã có sự liên quan đến khá nhiều vấn đề lí thuyết, điều này đòi hỏi bản thân người làm phải cần phải tìm tòi và vận dụng. Trong xu thế hiện nay là việc điện tử hóa các thiết bị phục vụ cho con người nhằm ngày càng đáp ứng được trọn vẹn yêu cầu của người dùng, do vậy bản thân người làm đề tài cảm thấy cần phải rèn luyện mình nhiều hơn nữa không chỉ trong luận văn tốt nghiệp ra trường mà một điều còn quan trọng hơn nữa là khi đã ra trường vẫn phải không ngừng phấn đấu. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI : Đề tài “Điện năng kế điện tử giao tiếp máy tính” đã được hoàn thành trong thời hạn đã giao. Đối với một đề tài mới thì việc nghiên cứu lần đầu chắc chắn không thể tránh khỏi sự thiếu sót do vậy tuy đã cố gắng nhiều nhưng người làm đề tài vẫn chưa thật sự đáp ứng được hết các yêu cầu đề ra ban đầu, rất mong sự thông cảm của quí Thầy, Cô và các bạn sinh viên. Nhìn chung, đề tài đã hoàn thành xong những vấn đề chính yếu nhất và điều đó giúp tạo ra sườn chung cho việc nghiên cứu phát triển sau này. Điều cần làm đối với người kế tục đề tài là nghiên cứu sâu hơn tất cả các vấn đề đã nêu ra trong luận văn tốt nghiệp nhằm tìm ra phương pháp tốt hơn hoặc hoàn chỉnh phương pháp đã nêu, sự gợi ý này chỉ mang tính chất chung chung mà điều cần thiết là phải biết tự suy nghĩ. Mạch điện đã trình bày chưa phải là một mạch điện hoàn hảo vì việc sử dụng các thiết bị chưa có sự chuẩn hóa mà đều phải tận dụng các thiết bị có sẵn, đây là một điều bắt buộc ngoài ý muốn. Nếu như có thể thì tất cả các bộ phận bên trong điện năng kế điện tử đều được chế tạo chuyên dùng, khi được như vậy thì chắc chắn thiết bị hoạt động sẽ chính xác và bền bỉ hơn nhiều. Nhưng điều này chỉ có thể trở thành hiện thực khi mô hình và lí thuyết tính toán thật chi tiết và chính xác sau đó cần trải qua một thời gian dài thử nghiệm và điều chỉnh. Sau khi đã đạt được tất cả các thông số yêu cầu và được ngành điện lực chấp nhận thì lúc đó mới đặt hàng tại các xí nghiệp điện tử để sản xuất các bộ phận. Đây cũng là điều mong mỏi lớn nhất của người làm đề tài này. Ngoài ra, nếu như phần mềm có thể được viết tốt hơn sẽ thay thế cho một số thiết bị phần cứng bên ngoài, nhưng lúc đó cần phải lưu ý về khả năng hoạt động của khối xử lí không thể nào đáp ứng được tất cả các yêu cầu từ thiết bị bên ngoài mà không cần sự trợ giúp từ một thiết bị phần cứngï. Cần phải lưu ý rằng, công việc quan trọng nhất của khối điều khiển là thu thập tín hiệu tại các đầu dò và xử lí dữ liệu để tính toán ra đại lượng mong muốn là điện năng tiêu thụ, do vậy khi viết phần mềm để đảm nhận những công việc thay thế cho phần cứng bên ngoài tức là khối xử lí sẽ phải gánh vác thêm nhiệm vụ thì có thể gây ra sự sai số quá mức cho phép và lúc đó chương trình sẽ trở nên quá phức tạp. Sinh viên thực hiện đề tài Trần Đại Nghĩa CHƯƠNG 1: TÓM LƯỢC CÁC VẤN ĐỀ LÍ THUYẾT LIÊN QUAN ĐỀ TÀI Đề tài : “Điện năng kế điện tử giao tiếp máy tính” có liên quan đến nhiều vấn đề lí thuyết. Nhưng trong phạm vi của một Luận Văn Tốt Nghiệp, người làm đề tài không thể trình bày chi tiết từng vấn đề được, mà chỉ đề cập đến một cách tóm lược nhằm làm cơ sở cho các lí luận sau này. Do vậy nếu các bạn sinh viên nếu có nhu cầu tìm hiểu sâu hơn hãy nên tham khảo trong các tài liệu chuyên môn của ngành. A. VI ĐIỀU KHIỂN 8951 I . MÔ TẢ CẤU TRÚC PHẦN CỨNG CỦA VI ĐIỀU KHIỂN 8951. 1/ Giới thiệu họ MCS51: MCS51 là một họ IC vi điều khiển (Microcontroller ) do hãng Intel sản xuất. Các IC tiêu biểu cho họ MCS51 là 8051 và 8031. Đặc biệt, vi điều khiển 8951 được sản xuất gần đây mang các đặc điểm sau: 4 Kbytes EEPROM. 128 bytes RAM. 4 ports I/O (Input/Output). 2 bộ định thời (timer) 16 bits. Giao tiếp nối tiếp. 64 Kbytes không gian bộ nhớ chương trình mở rộng. 64 Kbytes không gian bộ nhớ dữ liệu mở rộng. Một bộ xử lí luận lí (thao tác trên các bit đơn). 210 bits được địa chỉ hóa. Bộ nhân chia 4 ms. 2/ Sơ lược về các chân của 8951: mC 8951 có tất cả 40 chân có chức năng như các đường xuất nhập. Trong đó có 24 chân có công dụng kép, mỗi đường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của bus dữ liệu và bus địa chỉ. 2.1/ Hệ thống giao tiếp port: a/ Port 0: Port 0 là một port hai chức năng trên các chân 32 – 39. Trong các thiết kế cỡ nhỏ (không dùng bộ nhớ mở rộng) nó có chức năng như các đường I/O. Đối với các thiết kế lớn với bộ nhớ mở rộng, nó được hợp kênh giữa bus dữ liệu và byte thấp của bus địa chỉ. b/ Port 1: Port 1 là một port I/O trên các chân 1 – 8. Các chân được kí hiệu: P1.0 ; P1.1 ; P1.2 … có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần. Port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị ngoài. c/ Port 2: Port 2 là một port công dụng kép trên các chân 21 – 28 được dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết kế dùng bộ nhớ mở rộng. d/ Port 3: Port 3 là một port công dụng kép trên các chân 10 – 17. Các chân của port này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của 8951 như ở bảng sau: Bit Tên Chức năng chuyển đổi P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 RXD TXD INT0\ INT1\ T0 T1 WR\ RD\ Dữ liệu nhận cho port nối tiếp Dữ liệu phát cho port nối tiếp Ngắt 0 bên ngoài Ngắt 1 bên ngoài Ngõ vào của Timer/counter 0 Ngõ vào của Timer/counter 1 Xung ghi bộ nhớ dữ liệu ngoài Xung đọc bộ nhớ dữ liệu ngoài 2.2/ Các tín hiệu điều khiển: mC 8951 có 4 tín hiệu điều khiển: a/ PSEN\ (Program Store Enable): PSEN\ là tín hiệu ra trên chân 29. Nó là tín hiệu điều khiển cho phép bộ nhớ chương trình mở rộng, PSEN\ thường được nối đến chân OE (Output Enable) của một EPROM để cho phép đọc các byte mã lệnh. PSEN\ sẽ ở mức thấp trong thời gian lấy lệnh. Các mã nhị phân của chương trình được đọc từ EPROM qua bus dữ liệu và được chốt vào thanh ghi lệnh của 8951 để giải mã lệnh. Nếu thi hành chương trình trong ROM nội (8951) thì PSEN\ sẽ ở mức thụ động (mức cao). b/ ALE (Address Latch Enable): Tín hiệu ra ALE trên chân 30 tương hợp với các thiết bị làm việc với các vi xử lí 8085, 8088, 8086. mC 8951 dùng ALE một cách tương tự cho việc giải kênh các bus địa chỉ và dữ liệu. Khi port 0 được dùng trong chế độ chuyển đổi: vừa là bus dữ liệu vừa là byte thấp của bus địa chỉ, ALE là tín hiệu để chốt byte thấp địa chỉ vào một thanh ghi bên ngoài trong nửa đầu chu kì bộ nhớ. Sau đó, các đường port 0 dùng để xuất nhập dữ liệu trong nửa sau của chu kì bộ nhớ. Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thể được dùng làm nguồn xung nhịp cho các phần khác của hệ thống. Nếu xung nhịp trên 8951 là 12 Mhz thì ALE có tần số 2 Mhz. Chỉ ngoại trừ khi thi hành lệnh MOVX, một xung ALE sẽ bị mất. Trong trường hợp là 8051 thì chân này cũng được làm ngõ vào cho xung lập trình cho EPROM trong chip. c/ EA\ (External Access): Tín hiệu vào EA\ trên chân 31 thường được mắc lên mức cao (+5v) hoặc mức thấp (GND). Nếu ở mức cao, 8951 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp (4K). Nếu ở mức thấp, chương trình chỉ được thi hành từ bộ nhớ mở rộng. Khi dùng 8031, EA\ luôn được nối mức thấp vì 8031 không có bộ nhớ chương trình trên chip. Nếu EA\ được nối mức thấp thì bộ nhớ chương trình bên trong 8951 sẽ bị cấm và chương trình chỉ được thi hành từ EPROM mở rộng. Người ta còn dùng EA\ làm chân cấp điện áp 21V khi lập trình cho EEPROM trong 8051. d/ RST (Reset): Ngõ vào RST trên chân 9 là ngõ reset của 8951. Khi tín hiệu này được đưa lên mức cao (trong ít nhất 2 chu kì máy), các thanh ghi bên trong 8951 được tải những giá trị thích hợp để khởi động hệ thống. e/ Các ngõ vào bộ dao động trên chip: Như đã thấy trong các hình trên, 8951 có một bộ dao động trên chip. Nó thường được nối với một thạch anh giữa hai chân 18 và 19. Các tụ giữ cũng cần thiết như đã vẽ. Tần số thạch anh thông thường là 12 Mhz. f/ Các chân nguồn: 8951 hoạt động với nguồn đơn +5V. Vcc được nối vào chân 40 và Vss (GND) được nối vào chân 20. 3/ Tổ chức bộ nhớ: 3.1/ Khảo sát tổ chức bộ nhớ 8951: mC 8951 có bộ nhớ được tổ chức theo cấu trúc Harvard : có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu. Như đã nói ở trên, cả chương trình và dữ liệu có thể ở bên trong (8951); dù vậy chúng có thể được mở rộng bằng các thành phần ngoài lên đến tối đa 64 Kbytes bộ nhớ chương trình và 64 Kbytes bộ nhớ dữ liệu. Bộ nhớ bên trong bao gồm ROM (8951) và RAM trên chip bao gồm nhiều thành phần: Phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt. FFFF Bộ nhớ chương trình được chọn qua PSEN\ FFFF Bộ nhớ dữ liệu được chọn qua WR\ và RD\ FF 00 0000 0000 Bộ nhớ trên chip Bộ nhớ mở rộng Tóm tắt các vùng bộ nhớ của 8951. Hai đặc tính cần lưu ý là: Các thanh ghi và các port xuất nhập đã được xếp trong bộ nhớ và có thể được truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác. Ngăn xếp bên trong RAM nội nhỏ hơn so với RAM ngoài so với bộ xử lí khác. 3.2/ Chi tiết về bộ nhớ RAM trên chip: Như sẽ thấy trong hình sau, RAM bên trong 8951 được phân chia thành các bank thanh ghi (00H – 1FH), RAM địa chỉ hóa bit (20H – 2FH), RAM đa dụng (30H – 7FH) và các thanh ghi chức năng đặc biệt trong khoảng (80H – FFH). RAM đa dụng: Mặc dù trên hình cho thấy 80 bytes RAM đa dụng chiếm các địa chỉ từ 30H – 7FH, 32 bytes dưới cùng từ 00H – 1FH cũng có thể được dùng với mục đích tương tự (mặc dù các địa chỉ này đã có mục đích khác). Địa chỉ Địa chỉ byte Địa chỉ bit byte Địa chỉ bit 7F RAM đa dụng FF F0 F7 F6 F5 F4 F3 F2 F1 F0 B E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC D0 D7 D6 D5 D4 D3 D2 _ D0 PSW 30 B8 _ _ _ BC BB BA B9 B8 IP 2F 7F 7E 7D 7C 7B 7A 79 78 2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P3 2D 6F 6E 6D 6C 6B 6A 69 68 2C 67 66 65 64 63 62 61 60 A8 AF _ _ AC AB AA A9 A8 IE 2B 5F 5E 5D 5C 5B 5A 59 58 2A 57 56 55 54 53 52 51 50 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2 29 4F 4E 4D 4C 4B 4A 49 48 28 47 46 45 44 43 42 41 40 99 không được địa chỉ hóa bit SBUF 27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 9A 99 98 SCON 26 37 36 35 34 33 32 31 30 25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1 24 27 26 25 24 23 22 21 20 23 1F 1E 1D 1C 1B 1A 19 18 8D không được địa chỉ hóa bit TH1 22 17 16 15 14 13 12 11 10 8C không được địa chỉ hóa bit TH0 21 0F 0E 0D 0C 0B 0A 09 08 8B không được địa chỉ hóa bit TL1 20 07 06 05 04 03 02 01 00 8A không được địa chỉ hóa bit TL0 1F BANK 3 89 không được địa chỉ hóa bit TMOD 18 88 8F 8E 8D 8C 8B 8A 89 88 TCON 17 BANK 2 87 không được địa chỉ hóa bit PCON 10 0F BANK 1 83 không được địa chỉ hóa bit DPH 08 82 không được địa chỉ hóa bit DPL 07 BANK 0 ( Mặc định cho R0 – R7 ) 81 không được địa chỉ hóa bit SP 00 80 87 86 85 84 83 82 81 80 P0 RAM CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT Tóm tắt bộ nhớ dữ liệu trên chip Mọi địa chỉ trong vùng RAM đa dụng đều có thể được truy xuất tự do dùng cách đánh địa chỉ trực tiếp hoặc gián tiếp. Ví dụ, để đọc nội dung ở địa chỉ 5FH của RAM nội vào thanh ghi tích lũy, lệnh sau sẽ được dùng: MOV A, 5FH Lệnh này di chuyển 1 byte dữ liệu dùng cách đánh địa chỉ trực tiếp để xác định “địa chỉ nguồn” (5FH). Đích nhận dữ liệu được ngầm xác định trong mã lệnh là thanh ghi tích lũy A. RAM bên trong cũng có thể được truy xuất dùng cách đánh địa chỉ gián tiếp qua R0 hay R1. Ví dụ, hai lệnh sau thi hành cùng nhiệm vụ như lệnh đơn ở trên: MOV R0, #5FH MOV A, @R0 Lệnh đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi R0, và lệnh thứ hai dùng địa chỉ gián tiếp để di chuyển dữ liệu “được trỏ bởi R0” vào thanh ghi tích lũy. RAM địa chỉ hóa từng bit: mC 8951 chứa 210 bits được địa chỉ hóa, trong đó 128 bits là ở các địa chỉ byte 20H đến 2FH, và phần còn lại là trong các thanh ghi chức năng đặc biệt. Ý tưởng truy xuất từng bit riêng rẽ bằng phần mềm là một đặc tính tiện lợi của vi điều khiển nói chung. Các bit có thể được đặt, xóa, AND, OR, … với một lệnh đơn. Trong khi đó, đa số các vi xử lí đòi hỏi một chuỗi lệnh đọc – sửa – ghi để đạt được hiệu quả tương tự. Hơn nữa, các port I/O cũng được địa chỉ hóa từng bit làm đơn giản phần mềm xuất nhập từng bit. Có 128 bits được địa chỉ hóa đa dụng ở các byte 20H đến 2FH. Các địa chỉ này được truy xuất như các byte hoặc như các bit phụ thuộc vào lệnh được dùng. Ví dụ, để đặt bit 67H, ta dùng lệnh sau: SET 67H Chú ý rằng “địa chỉ bit 67H” là bit có trọng số lớn nhất (MSB) ở “địa chỉ byte 2CH”. Lệnh trên sẽ không tác động đến các bit khác ở địa chỉ này. Các vi xử lí sẽ phải thi hành nhiệm vụ tương tự như sau: MOV A, 2CH ; đọc cả byte ORL A, #10000000B ; set MSB MOV 2CH, A ; ghi lại cả byte Các bank thanh ghi: 32 bytes thấp nhất của bộ nhớ nội là dành cho các bank thanh ghi. Bộ lệnh của 8951 hỗ trợ 8 thanh ghi (R0 – R7) và theo mặc định (sau khi reset hệ thống) các thanh ghi này ở các địa chỉ 00H – 07H. Lệnh sau đây sẽ đọc nội dung ở địa chỉ 05H vào thanh ghi tích lũy : MOV A, R5 Đây là lệnh một byte dùng địa chỉ thanh ghi. Tất nhiên, thao tác tương tự có thể được thi hành bằng lệnh 2 bytes dùng địa chỉ trực tiếp nằm trong byte thứ hai: MOV A, 05H Các lệnh dùng các thanh ghi R0 đến R7 thì ngắn hơn và nhanh hơn các lệnh tương ứng nhưng dùng địa chỉ trực tiếp. Các giá trị dữ liệu được dùng thường xuyên nên dùng một trong các thanh ghi này. Bank thanh ghi tích cực có thể được chuyển đổi bằng cách thay đổi các bit chọn bank thanh ghi trong từ trạng thái chương trình (PSW). Giả sử rằng bank thanh ghi 3 được tích cực, lệnh sau sẽ ghi nội dung của thanh ghi tích lũy vào địa chỉ 18H: MOV R0, A Ý tưởng dùng “các bank thanh ghi” cho phép “chuyển hướng” chương trình nhanh và hiệu quả (từng phần riêng rẽ của phần mềm sẽ có một bộ thanh ghi riêng không phụ thuộc vào các phần khác). 4/ Các thanh ghi chức năng đặc biệt: Các thanh ghi nội của 8951 được truy xuất ngầm định bởi bộ lệnh. Ví dụ lệnh “INC A” sẽ tăng nội dung của thanh ghi tích lũy A lên 1. Tác động này được ngầm định trong mã lệnh. Các thanh ghi trong 8951 được định dạng như một phần của RAM trên chip. Vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi đếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp, nên không lợi lộc gì khi đặt chúng vào trong RAM trên chip). Đó là lí do để 8951 có nhiều thanh ghi như vậy. Cũng như R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SFR: Special Function Register) ở vùng trên của RAM nội, từ địa chỉ 80H đến FFH. Chú ý rằng hầu hết 128 địa chỉ từ 80H đến FFH không được định nghĩa. Chỉ có 21 địa chỉ SFR là được định nghĩa. Ngoại trừ thanh ghi tích lũy A có thể được truy xuất ngầm như đã nói, đa số các SFR được truy xuất dùng địa chỉ trực tiếp. Chú ý rằng một vài SFR có thể được địa chỉ hóa bit hoặc byte. Người thiết kế phải thận trọng khi truy xuất bit và byte. Ví dụ lệnh sau: SETB 0E0H Lệnh này sẽ set bit 0 trong thanh ghi tích lũy, các bit khác không đổi. Ta thấy rằng E0H đồng thời là địa chỉ byte của cả thanh ghi tích lũy và là địa chỉ bit của bit có trọng số nhỏ nhất trong thanh ghi tích lũy. Vì lệnh SETB chỉ tác động trên bit, nên chỉ có địa chỉ bit là có hiệu quả. a/ Từ trạng thái chương trình: Từ trạng thái chương trình (PSW: Program Status Word) ở địa chỉ D0H chứa các bit trạng thái như bảng tóm tắt sau: Bit Kí hiệu Địa chỉ Ý nghĩa PSW.7 CY D7H Cờ nhớ PSW.6 AC D6H Cờ nhớ phụ PSW.5 F0 D5H Cờ 0 PSW.4 RS1 D4H Bit 1 chọn bank thanh ghi PSW.3 RS0 D3H Bit 0 chọn bank thanh ghi 00 = bank 0 ( địa chỉ 00H – 07H ) 01 = bank 1 ( địa chỉ 08H – 0FH ) 10 = bank 2 ( địa chỉ 10H – 17H ) 11 = bank 3 ( địa chỉ 18H – 1FH ) PSW.2 OV D2H Cờ tràn PSW.1 _ D1H Dự trữ PSW.0 P D0H Cờ parity chẵn Cờ nhớ: Cờ nhớ (CY) có công dụng kép. Thông thường nó được dùng cho các lệnh toán học: nó sẽ được set nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số mượn bởi phép trừ. Ví dụ, nếu thanh ghi tích lũy chứa FFH, thì lệnh sau: ADD A, #1 sẽ trả về thanh ghi tích lũy kết quả 00H và set cờ nhớ trong PSWK. Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh luận lí thi hành trên bit. Ví dụ, lệnh sau sẽ AND bit 25H với cờ nhớ và đặt kết quả trở vào cờ nhớ: AND C, 25H Cờ nhớ phụ: Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4 bit thấp trong khoảng 0AH đến 0FH. Nếu các giá trị được cộng là số BCD thì sau lệnh cộng cần có DA A (hiệu chỉnh thập phân thanh ghi tích lũy) để điều chỉnh kết quả cho phù hợp. Cờ 0: Cờ 0 (F0) là 1 bit cờ đa dụng dành cho các ứng dụng của người dùng. Các bit chọn bank thanh ghi : Các bit chọn bank thanh ghi (RS0 và RS1) xác định bank thanh ghi nào được tích cực. Chúng được xóa sau khi reset hệ thống và được thay đổi bằng phần mềm nếu cần. Ví dụ, 3 lệnh sau cho phép bank thanh ghi 3 và di chuyển nội dung của thanh ghi R7 (địa chỉ byte 1FH) đến thanh ghi tích lũy: SETB RS1 SETB RS0 MOV A, R7 Khi chương trình được hợp dịch, các địa chỉ bit đúng được thay thế cho các kí hiệu “RS1” và “RS0”. Vậy, lệnh SETB RS1 sẽ giống như lệnh SETB 0D4H. Cờ tràn: Cờ tràn (OV) được set sau một lệnh cộng hoặc trừ nếu có phép toán bị tràn. Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểm tra bit này để xác định xem kết quả có nằm trong tầm xác định không. Khi các số không dấu được cộng, bit OV có thể được bỏ qua. Các kết quả lớn hơn +127 hoặc nhỏ hơn –128 sẽ set bit OV. Ví dụ, phép cộng sau bị tràn và bit OV được set : Hex 0F Thập phân 15 + + 7F 127 8E 142 Kết quả là một số có dấu 8EH được xem như –14, không phải là một kết quả đúng (142), vì vậy bit OV được set. b/ Thanh ghi B: Thanh ghi B ở địa chỉ F0H được dùng với thanh ghi tích lũy A cho các phép toán nhân và chia. Lệnh MUL AB sẽ nhân các giá trị không dấu 8 bit trong A và B rồi trả về kết quả 16 bit trong A (byte thấp) và B (byte cao). Lệnh DIV AB sẽ chia A cho B rồi trả về kết quả nguyên trong A và phần dư trong B. Thanh ghi B cũng có thể được xem như thanh ghi đệm đa dụng. Nó được địa chỉ hóa từng bit bằng các địa chỉ bit F0H đến F7H. c/ Con trỏ ngăn xếp: Con trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở địa chỉ 81H. Nó chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp. Các lệnh trên ngăn xếp bao gồm các thao tác cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp. Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi cất dữ liệu, và lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ đọc dữ liệu và giảm SP. Ngăn xếp của 8951 được giữ trong RAM nội và được giới hạn các địa chỉ có thể truy xuất bằng địa chỉ gián tiếp. Chúng là 128 bytes đầu của 8951. Để khởi động lại SP với ngăn xếp bắt đầu tại 60H, các lệnh sau đây được dùng: MOV SP, #5FH Trên 8951 ngăn xếp bị giới hạn 32 bytes vì địa chỉ cao nhất của RAM trên chip là 7FH. Sở dĩ dùng giá trị 5FH vì SP sẽ tăng lên 60H trước khi cất byte dữ liệu đầu tiên. Người thiết kế có thể chọn không phải khởi động lại con trỏ ngăn xếp mà để nó lấy giá trị mặc định khi reset hệ thống. Giá trị mặc định đó là 07H và kết quả là ngăn đầu tiên để cất dữ liệu có địa chỉ là 08H. Nếu phần mềm ứng dụng không khởi động lại SP, thì bank thanh ghi 1 (có thể cả 2 và 3) sẽ không dùng được vì vùng RAM này đã được dùng làm ngăn xếp. Ngăn xếp được

Các file đính kèm theo tài liệu này:

  • docLUANVAN.DOC
Tài liệu liên quan