• Tổng đài nông thôn RE Rural Exchange: được sử dụng ở các xã, khu đông dân đông, chợ… và 1.3 Các chức năng của hệ thống tổng đài: Mặc dù các hệ thống tổng đài được nâng cấp rất nhiều từ
Trang 1Mục lục
PHẦN 1 : LÝ THUYẾT CƠ SỞ PHẦN 3 : TÀI LIỆU THAM KHẢO – PHỤ LỤC
Phần 1
LÝ THUYẾT CƠ SỞ
Trang 2Chương 1 GIỚI THIỆU CHUNG VỀ TỔNG ĐÀI
1.1 Khái niệm tổng đài:
Tổng đài điện thoại là một hệ thống chuyển mạch, nó có nhiệm vụ kết nối các cuộc liên lạc từthiết bị đầu cuối chủ gọi đến thiết bị đầu cuối bị gọi
Trong sự phát triển kỹ thuật về viễn thông có hai bước ngoặc lớn:
• Vào thập kỷ 1960 là sự xóa bỏ khoảng cách địa lí, điện thoại gọi được đi khắp thế giới, trái đấtnhư co lại
• Vào thập kỷ 1980 là sự chinh phục thời gian, sự thành công của kỹ thuật số phân theo thời gian
cả về chuyển mạch và truyền dẫn
Ngày nay, kỹ thuật số và chuyển mạch, truyền dẫn… phân theo thời gian đã trở nên rất phổbiến và là phương thức hoạt động chủ yếu trong các hệ tổng đài hiện nay Trong đó kỹ thuật điềuchế xung mã (PCM: pulse code modulation) được sử dụng rất hiệu quả trong các mạng truyền sốliệu, tiếng nói, hình ảnh đang phát triển hiện nay, đó là mạng số liên kết dịch vụ ISDN
1.2 Phân loại tổng đài:
1.2.1 Phân loại theo công nghệ: được chia làm hai loại
1.2.1.1 T ổ ng đài nhân công:
Tổng đài nhân công ra đời đầu tiên từ khi mới bắt đầu hệ thống thông tin điện thoại, trong tổngđài việc định hướng thông tin được thực hiện bằng sức người, nói cách khác, việc kết nối thôngthoại cho các thuê bao được thực hiện bằng thao tác trực tiếp của con người
Nhược điểm của tổng đài nhân công là:
• Thời gian kết nối lâu
• Dễ nhầm lẫn
• Khó mở rộng dung lượng
• Tốn nhiều nhân công
1.2.1.2 T ổ ng đài tự động: được chia làm hai loại chính
Tổng đài cơ điện:
Kỹ thuật chuyển mạch trong tổng đài cơ điện nhờ vào các bộ chuyển mạch cơ khí, được điềukhiển bằng các mạch điện tử bao gồm:
So với tổng đài nhân công, tổng đài cơ điện có những ưu điểm lớn:
• Thời gian kết nối nhanh chóng hơn, chính xác hơn
• Dung lượng tổng đài có thể tăng lên nhiều
Trang 3• Giảm nhẹ công việc của điện thoại viên.
Tuy nhiên tổng đài cơ điện có một số nhược điểm sau:
• Thiết bị cồng kềnh
• Tốn nhiều năng lượng
• Điều khiển kết nối phức tạp
• Bảo trì, bảo dưỡng phức tạp
Tổng đài điện tử :
Trong các tổng đài điện tử, các bộ chuyển mạch gồm các linh kiện bán dẫn, vi mạch cùng vớicác relay, analog switch được điều khiển bằng các mạch điện tử, vi mạch
Ưu điểm:
• Các bộ chuyển mạch bằng bán dẫn thay thế các bộ chuyển mạch cơ khí của tổng đài cơ điện làm
cơ cấu tổng đài gọn nhẹ đi nhiều, thời gian kết nối thông thoại nhanh hơn, năng lượng tiêu tán íthơn
• Có thể tăng dung lượng thuê bao lớn mà thiết bị không phức tạp lên nhiều
Hiện nay trong mạng viễn thông Việt Nam có 5 loại tổng đài sau:
• Tổng đài cơ quan PABX (Private Automatic Branch Exchange): được sử dụng trong các cơ quan,khách sạn và chỉ sử dụng các trung kế co - Line
• Tổng đài nông thôn RE (Rural Exchange): được sử dụng ở các xã, khu đông dân đông, chợ… và
1.3 Các chức năng của hệ thống tổng đài:
Mặc dù các hệ thống tổng đài được nâng cấp rất nhiều từ khi nó được phát minh ra, các chứcnăng cơ bản của nó như xác định các cuộc gọi thuê bao, kết nối với thuê bao bị gọi và sau đó tiếnhành phục hồi lại khi các cuộc gọi đã hoàn thành hầu như vẫn như cũ Hệ thống tổng đài nhâncông tiến hành các quá trình này bằng tay, trong khi hệ thống tổng đài tự động tiến hành nhữngcông việc này bằng các thiết bị điện
Trong trường hợp đầu, khi một thuê bao gởi yêu cầu kết nối tới tổng đài, nhân viên cắm nút trảlời đường dây bị gọi vào ổ cắm của dây chủ gọi để thiết lập cuộc gọi với phía bên kia Khi cuộcgọi đã hoàn thành, người vận hành rút dây nối ra và đưa nó về trạng thái ban đầu Hệ thống tổngđài nhân công được phân thành loại điện từ và hệ dùng ăc-quy chung Đối với hệ điện từ thì thuêbao lắp thêm cho mỗi ăc-quy chung Các tín hiệu gọi và tín hiệu hoàn thành cuộc gọi được đơngiản chuyển tới người thao tác viên thông qua các đèn
Đối với hệ tổng đài tự động, các cuộc gọi được phát ra và hoàn thành thông qua các bước sau:
Trang 4Xác định thuê bao nhấc ống nghe và sau đó được nối với mạch điều khiển.
Khi đã nối với mạch điều khiển, thuê bao chủ gọi bắt đầu nghe thấy tín hiệu mời quay số vàsau đó chuyển số điện thoại của thuê bao bị gọi Hệ thống tổng đài thực hiện các chức năng này
Khi số quay được ghi lại, thuê bao bị gọi đã được xác định, hệ tổng đài sẽ chọn một bộ cácđường trung kế đến tổng đài thuê bao bị gọi và chọn một đường rỗi trong số đó Khi thuê bao bịgọi nằm trong tổng đài nội hạt thì đường dây nội hạt được sử dụng
Khi được nối tới tổng đài của thuê bao bị gọi hay tổng đài trung chuyển, cả hai tổng đài traođổi với nhau các thông tin cần thiết như số của thuê bao bị gọi
Trong trường hợp tổng đài được nối đến là tổng đài trung chuyển, các bước trên đây được nhắclại để kết nối tớii trạm cuối và sau đó thông tin như số của thê bao bị gọi được truyền đi
Khi trạm cuối được đánh giá là trạm nội hạt dựa trên số thuê bao bị gọi được truyền đi, bộ điềukhiển trạng thái máy bận của thuê bao bị gọi được tiến hành Nếu máy không ở trạng thái bận thìmột đường nối với các đường trung kế được chọn để kết nối các cuộc gọi
Để kết nối cuộc gọi, tín hiệu chuông được truyền và chờ cho đến khi có trả lời từ thuê bao bịgọi Khi trả lời tín hiệu chuông bị ngắt và trạng thái được chuyển thành trạng thái máy bận
Tổng đài chủ gọi xác định câu trả lời của thuê bao bị gọi và nếu cần thiết bắt đầu tính toán giátrị cước phải trả theo khoảng cách và thời gian gọi
Khi tất cả các đường trung kế bị chiếm theo các bước trên đây hoặc thuê bao bị gọi bận thì tínhiệu bận được truyền đến thuê bao chủ gọi
Do đó, các điểm cơ bản sau đây phải được xem xét khi vận hành và sử dụng:
Tiêu chuẩn truyền dẫn:
Trang 5Mục đích đầu tiên của việc đấu nối điện thoại là truyền tiếng nói và theo đó là chỉ tiêu của việctruyền dẫn để đáp ứng chất lượng gọi phải được xác định bằng cách xem xét sự mất mát khitruyền, độ rộng dải tần số truyền dẫn và tạp âm.
Tiêu chuẩn kết nối:
Điều này liên quan tới vấn đề dịch vụ đấu nối cho các thuê bao Đó là chỉ tiêu về các yêu cầuđối với các thiết bị tổng đài và các đường truyền dẫn nhằm đảm bảo chất lượng kết nối Nhằmmục đích này, một mạng lưới tuyến tính linh hoạt có khả năng xử lý đường thông tin có hiệu quảvới tỷ lệ cuộc gọi bị mất ít nhất phải được lập ra
Độ tin cậy:
Các thao tác điều khiển phải được tiến hành phù hợp, đặc biệt các lỗi xuất hiện trong hệ thốngvới những chức năng điểu khiển tập trung có thể gặp phải những hậu quả nghiêm trọng trong thaotác hệ thống, theo đó hệ thống phải có được chức năng sửa chữa và bảo dưỡng hữu hiệu bao gồmviệc chuẩn đoán lỗi, tìm và sửa chữa
Độ linh hoạt:
Số lượng các cuộc gọi có thể xử lý thông qua các hệ thống tổng đài đã tăng lên rất hiểu và nhucầu nâng cấp các chức năng hiện nay đã tăng lên Do đó hệ thống phải đủ linh hoạt để mở rộng vàsửa đổi được
1.4.2 Phân loại các thông tin âm hiệu:
1.4.2.1 Thông tin về yêu cầu và giải tỏa cuộc gọi:
Thông tin yêu cầu cuộc gọi: là khi thuê bao nhấc tổ hợp và tổng đài sẽ kết nối đến thiết bị nhậnthích hợp để nhận thông tin địa chỉ (số bị gọi)
Thông tin giải tỏa: khi đó cả hai thuê bao đầu gác tổ hợp (on hook) và tổng đài sẽ giải tỏa tất
cả các thiết bị được làm bận cho cuộc gọi và xóa sạch bất kỳ thông tin nào khác được dùng choviệc thiết lập và kiềm giữ cuộc gọi
1.4.2.2 Thông tin chọn địa chỉ:
Trang 6Khi tổng đài đã sẵn sàng nhận thông tin điạ chỉ, nó sẽ gởi một tín hiệu yêu cầu đến thuê bao
-đó chính là âm hiệu mời quay số (dial tone)
1.4.2.3 Thông tin chấm dứt chọn địa chỉ:
Thông tin này chỉ dẫn tình trạng của đường dây bị gọi hoặc lý do không hoàn tất cuộc gọi
1.4.2.4 Thông tin giám sát:
Chỉ rõ tình trạng nhấc/gác tổ hợp của thuê bao gọi cũng như tình trạng của thuê bao bị gọi saukhi đường thoại đã được thiết lập
Thuê bao gọi nhấc tổ hợp
Thuê bao bị gọi đã trả lời và việc tính cước đã bắt đầu
Thuê bao bị gọi gác tổ hợp
Thuê bao bị gọi đã gác tổ hợp kết thúc cuộc gọi và ngắt đường kết nối cuộc gọi sau một thờigian nếu thuê bao chủ gọi không gác tổ hợp
1.4.3.1 Báo hiệu trẽn đường dây thuê bao gọi:
Trong các mạng điện thoại hiện nay, nguồn tổng đài cung cấp đến các thuê bao thường là48VDC - 52VDC
Yêu cầu cuộc gọi: khi thuê bao rỗi, trở kháng đường dây cao, trở kháng đường dây giảm xuốngngay khi thuê bao nhấc tổ hợp kết quả là dòng điện tăng cao Dòng tăng cao này được tổng đàiphát hiện như là một yêu cầu kết nối và sẽ cung cấp đến thuê bao âm hiệu mời quay số
Tín hiệu địa chỉ: sau khi nhận tín hiệu mời quay số, thuê bao sẽ gởi các chữ số địa chỉ Các chữ
số địa chỉ có thể được phát đi bằng hai cách quay số, quay số ở chế độ Pulse và quay số ở chế độTone
Tín hiệu chấm dứt việc lựa chọn: sau khi nhận đủ địa chỉ, bộ phận nhận địa chỉ được ngắt ra.Sau đó việc kết nối được thiết lập, lúc này tổng đài gởi một trong các tín hiệu sau:
• Nếu đường dây bị gọi rỗi, tín hiệu chuông sẽ được gởi tới thuê bao bị gọi và tín hiệu hồi âmchuông được gởi về thuê bao chủ gọi
• Nếu đường dây bị bận hoặc không thể truy xuất được thì tín hiệu bận sẽ được gởi về thuê bao chủgọi
Một thông báo đã được ghi sẵn gởi đến thuê bao chủ gọi để chỉ dẫn cuộc gọi hiện tại bị thấtbại, khác với trường hợp thuê bao bị gọi bận
Tín hiệu trả lời trở về: ngay khi thuê bao bị gọi nhấc tổ hợp, một tín hiệu đảo cực được phátđến thuê bao gọi việc này cho phép sử dụng để hoạt động thiết bị đặc biệt đã được gắn vào thuêbao chủ gọi như máy tính cước
Tín hiệu giải tỏa: khi thuê bao chủ gọi đã gác tổ hợp, tổng trở đường dây lên cao, tổng đài xácnhận tín hiệu này và giải tỏa tất cả các thiết bị liên quan đến việc thiết lập cuộc gọi và xóa cácthông tin trong bộ nhớ đang được dùng để kềm giữ cuộc gọi thông thường tín hiệu này có trongkhoảng thời gian hơn 500ms
1.4.3.2 Báo hiệu trên đường dây thuê bao bị gọi:
Tín hiệu rung chuông: đường dây thuê bao rỗi nhận cuộc gọi đến, tổng đài sẽ gởi dòng điệnrung chuông tới máy bị gọi Dòng điện này có tần số 20Hz, 25Hz, 50Hz được ngắt quãng thíchhợp Đồng thời tín hiệu hồi âm chuông cũng được gởi tới thuê bao chủ gọi
Trang 7Tín hiệu trả lòi: khi thuê bao bị gọi nhấc tổ hợp nhận cuộc gọi, tổng trở đường dây xuống thấp,tổng đài phát hiện việc này sẽ cắt dòng điện rung chuông và âm hiệu hồi âm chuông bắt đầu giaiđoạn đàm thoại.
Tín hiệu giải tỏa: nếu sau khi giai đoạn đàm thoại, thuê bao bị gọi ngắt tổ hợp trước thuê baochủ gọi sẽ thay đổi tình trạng tổng trở đường dây, khi đó tổng đài sẽ gởi tín hiệu đường dây lâudài đến thuê bao gọi và giải tỏa cuộc gọi sau một thời gian
Tín hiệu gọi lại bộ ghi phát: tín hiệu gọi lại trong giai đoạn quay số trong khoảng thời gianthoại được gọi là tín hiệu gọi lại bộ ghi phát
Đường dây điện thoại thông thường hiện nay có hai dây là dây Tip và dây Ring có màu đỏ vàmàu xanh Chúng ta không cần quan tâm tới dây nào là dây Tip và dây nào là dây Ring vì điềunày thật sự không quan trọng Tất cả các điện thoại hiện nay đều được cấp nguồn thông hai dâynày Điện áp cung cấp thường là 48VDC nhưng cũng có thể thấp đến 47VDC hoặc cao tới105VDC tùy thuộc vào tổng đài
Ngoài ra, để hoạt động giao tiếp được dễ dàng, tổng đài sẽ gởi một số tín hiệu đặc biệt tới điệnthoại như tín hiệu chuông, tín hiệu báo bận, tín hiệu xâm nhập Sau đây chúng ta sẽ tím hiểu vềcác tín hiệu này và ứng dụng của nó
1.4.4.1 Tín hiệu chuông (Ringging Signal):
Khi một thuê bao bị gọi thì tổng đài sẽ gởi tín hiệu chuông đến để báo cho thuê bao đó biết cóngười gọi Tín hiệu chuông là tín hiệu xoay chiều AC thường có tần số 25Hz tuy nhiên nó có thểcao hơn đến 60Hz hoặc thấp hơn đến 16Hz Biên độ của tín hiệu chuông cũng thay đổi từ 40Vrms đến 130 Vrms Tín hiệu chuông được gởi tới theo dạng xung thường là 2s có và 4s không(như hình vẽ), hoặc có thể thay đổi theo thời gian tùy thuộc vào tổng đài
1.4.4.2 Tín hiệu mời gọi (dial tone):
Trang 8Đây là tín hiệu liên tục không phải là tín hiệu xung như các tín hiệu khác được sử dụng trong
hệ thống điện thoại, tín hiệu này được tạo ra bởi âm thanh (tone) có tần số từ 350Hz đến 440Hz
1.4.4.3 Tín hiệu báo bận (busy signal):
Tín hiệu mời gọi cho phép thuê bao thực hiện ngay một cuộc gọi
Tín hiệu báo bận báo cho thuê bao biết đường dây đang bận không thể thực hiện cuộc gọi ngaylúc này Thuê bao phải chờ tới khi nghe được tín hiệu mời gọi Khi thuê bao bị gọi đã nhấc máytrước khi thuê bao gọi cũng nghe được tín hiệu này
1.4.4.4 Tín hiệu hồi âm chuông:
Tín hiệu báo bận là tín hiệu xoay chiều có dạng hình sin tần số 425Hz, có chu kỳ ls (0.5s có và0.5 s không)
Tín hiệu hồi âm chuông (ringback tonẹ); là tín hiệu hình sin tần số f = 425Hz ± 25Hz, biên độ2Vrms trên nền DC 10V, phát ngắt quãng 1s có 2s không
1.4.4.5 Gọi sai số:
Nếu bạn gọi nhầm một số mà nó không tồn tại thì bạn sẽ nhận được tín hiệu xung có chu kỳ kỳ1s và có tần số 200Hz - 400Hz Hoặc đối với các hệ thống điện thoại ngày nay bạn sẽ nhận đượcthông báo rằng bạn gọi sai số
1.4.4.6 Tín hiệu báo gác máy:
Trang 9Khi thuê bao nhấc tổ hợp ra khỏi điện thoại quá lâu mà không thực hiện cuộc gọi thì thuê bao
sẽ nhận được một tín hiệu chuông rất lớn ( để thuê bao có thể nghe được khi ở xa máy) để cảnhbáo Tín hiệu này là tổng hợp của bốn tần số 1400Hz + 2050Hz +2450Hz +2600Hz được phátdạng xung 0.ls có và 0.ls không
1.4.4.7 Tín hiệu đảo cực:
Tín hiệu đảo cực chính là sự đảo cực tính của nguồn tại tổng đài, khi hai thuê bao bắt đầu cuộcđàm thoại Một tín hiệu đảo cực sẽ xuất hiện, khi đó hệ thống tính cước của tổng đài sẽ bắt đầuthực hiện việc tính cước đàm thoại cho thuê bao gọi Ở các trạm công cộng có trang bị máy tínhcước, thì cơ quan bưu điện cung cấp tín hiệu đảo cực cho trạm để thuận tiện việc tính cước
BẢNG TÓM TẮT TẦN SỐ TÍN HIỆU TRONG HỆ THỐNG ĐIỆN THOẠI
Vùng hoạt động
Tín hiệu chuông 16 – 60 425 ± 25 Xung 2s on 4s off
Tín hiệu hồi âm chuông 425 ± 25 Xung ls on 2s off
Tín hiệu báo gác máy 1400 + 2060 +2450 + 2600 Xung 0,1 on 0,1 off
Khi ta nói vào ống nói, ống nói đã biến đổi sóng âm thanh thành dao động điện, tức là thànhtín hiệu điện thoại, một trong những yêu cầu quan trọng của điện thoại là mức độ rõ nét của tínhiệu Chỉ tiêu này liên quan chặt chẽ tới đặc tính của tín hiệu điện thoại là mức động, dải động vàbăng tần điện thoại
1.4.5.1 Mức động:
Biết rằng thính giác có quán tính, tai không phản ứng với quá trình tức thời của âm mà chỉ cảmthụ sau một khoảng thời gian nhất định để gom các nhân tố của âm Vậy tại thời điểm đang xét,cảm thụ thính giác không chỉ được xác định bởi công suất tín hiệu tại thời điểm đó mà còn bởi
Trang 10các giá trị vừa mới qua không lâu của tín hiệu Vậy mức động của tín hiệu điện thoại là cảm thụthính giác có được nhờ đặc tính bình quân trong khoảng thời gian xác định các giá trị tức là thờigian san bằng của các tín hiệu đó.
Độ hiểu lại tuy thuộc vào chủ quan của từng người
Thông thường độ rõ đạt 85% thì độ hiểu rất tốt, nếu độ rõ giảm dưới 70% thì độ hiểu rất kém
Độ trung thực truyền tín hiệu thoại: là tỷ số giữa các giọng nói mà người nghe nhận biết đúng trên tổng số các giọng nói truyền đạt
1.4.5.4 Băng tần điện thoại:
Qua quá trình nghiên cứu, người ta thấy rằng năng lượng tiếng nói con người chỉ tập trung lớnnhất trong khoảng tần số từ 300Hz - 3400Hz và người ta hoàn toàn nghe rõ, còn trong khoảng tần
số khác thì năng lượng không đáng kể Song băng tần càng mở rộng thì tiếng nói càng trung thực,chất lượng âm thanh càng cao Đối với điện thoại chủ yếu là yêu cầu nghe rõ, còn mức độ trungthực của tiếng nói chỉ cần đạt tới một mức độ nhất định Mặt khác trong thông tin điện thoại nếutruyền cả băng tần tiếng nói thì yêu cầu các thiết bị hỗ trợ cũng phải nâng lên Đặc biệt với nhữngthông tin nhiều kênh, nếu truyền cả băng tần tiếng nói thì sẽ ghép được ít kênh, và các thiết bị đầucuối, các trạm, phải có yêu cầu kỹ thuật cao hơn Cho nên băng tần truyền dẫn của điện thoại hiệnnay được chọn từ 300Hz - 3400Hz, gọi là băng tần truyền dẫn hiệu dụng của điện thoại
Trang 11Chương 2 GIỚI THIỆU VI ĐIỀU KHIỂN PIC16F877A
3.1 Tổng quan về họ Vi điều khiển PIC:
PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology Dòng PICđầu tiên là PIC1650 được phát triển bởi Microelectronics Division thuộc General Instrument PIC bắt nguồn là chữ viết tắt của "Programmable Intelligent Computer" (Máy tính khả trìnhthông minh) là một sản phẩm của hãng General Instruments đặt cho dòng sản phẩm đầu tiên của
họ là PIC1650 Lúc này, PIC1650 được dùng để giao tiếp với các thiết bị ngoại vi cho máy chủ16bit CP1600, vì vậy, người ta cũng gọi PIC với cái tên "Peripheral Interface Controller" (Bộđiều khiển giao tiếp ngoại vi) CP1600 là một CPU tốt, nhưng lại kém về các hoạt động xuấtnhập, và vì vậy PIC 8-bit được phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhậpcho CP1600 PIC sử dụng microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưađược sử dụng thời bây giờ, nhưng PIC thực sự là một vi điều khiển với kiến trúc RISC, chạy mộtlệnh một chu kỳ máy (4 chu kỳ của bộ dao động)
Năm 1985 General Instruments bán bộ phận vi điện tử của họ, và chủ sở hữu mới hủy bỏ hầuhết các dự án - lúc đó đã quá lỗi thời Tuy nhiên PIC được bổ sung EEPROM để tạo thành 1 bộđiều khiển vào ra khả trình Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt cácmodule ngoại vi tích hợp sẵn (như USART, PWM, ADC ), với bộ nhớ chương trình từ 512Word đến 32K Word
2.1.2 Đặc tính của Vi điều khiển PIC:
Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng, nhưng chúng ta có thểđiểm qua một vài nét như sau:
• 8/16 bit CPU, xây dựng theo kiến trúc Harvard có sửa đổi
• Flash và ROM có thể tuỳ chọn từ 256 byte đến 256 Kbyte
• Các cổng Xuất/Nhập (I/O ports) (mức logic thường từ 0V đến 5.5V, ứng với logic 0 và logic 1)
• 8/16 Bit Timer
• Công nghệ Nanowatt
• Các chuẩn Giao Tiếp Ngoại Vi Nối Tiếp Đồng bộ/Không đồng bộ USART, AUSART,EUSARTs
• Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit
• Bộ so sánh điện áp (Voltage Comparators)
• Các module Capture/Compare/PWM
• LCD
• MSSP Peripheral dùng cho các giao tiếp I²C, SPI, và I²S
• Bộ nhớ nội EEPROM - có thể ghi/xoá lên tới 1 triệu lần
• Module Điều khiển động cơ, đọc encoder
• Hỗ trợ giao tiếp USB
• Hỗ trợ điều khiển Ethernet
• Hỗ trợ giao tiếp CAN
Trang 12• Hỗ trợ giao tiếp LIN
• Hỗ trợ giao tiếp IrDA
• Một số dòng có tích hợp bộ RF (PIC16F639, và RFPIC)
• KEELOQ Mã hoá và giải mã
• DSP những tính năng xử lý tín hiệu số (dsPIC)
3.2 Giới thiệu Vi điều khiển PIC16F877A:
PIC16F877A thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit
Mỗi lệnh điều được thực thi trong một chu kỳ xung clock
Tốc độ hoạt động tối đa cho phép là 20MHz với một chu kỳ lệnh là 200ns
Bộ nhớ chương trình 8K x 14 bit, bộ nhớ dữ liệu 368 x 8 byte RAM và bộ nhớ dữ liệuEEPROM với dung lượng 256 x 8 byte
Số Port I/O là 5 với 33 pin I/O
Timer0: 8 bit định thời, đếm với 8 bit prescaler
Timer1: 16 bit định thời, đếm với prescaler, có thể được tăng lên trong suốt chế độ sleep quathạch anh, xung clock bên ngoài
Timer2: 8 bit định thời, đếm với 8 bit prescaler và postcaler
Hai module Capture, Compare, PWM:
• Capture có độ rộng 16 bit, độ phân giải 12.5ns
• Compare có độ rộng 16 bit, độ phân giải 200ns
• Độ phân giải lớn nhất của PWM là 10 bit
Chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port) với SPI và I2C
Chuẩn giao tiếp nối tiếp USART (Universal Synchronous Asynchronous ReceiverTransmitter) với 9 bit địa chỉ
Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD, WR, CS ởbên ngoài
8 kênh chuyển đổi ADC (Analog-to-Digital Converter) 10 bit
Brown-out Reset (BOR)
Module so sánh tương tự:
• Hai bộ so sánh tương tự
• Bộ điện áp chuẩn VREF có thể lập trình PIC
• Có thể lập trình ngõ ra vào đến từ những ngõ vào của PIC và trên điện áp bên trong
• Những ngõ ra của bộ so sánh có thể sử dụng cho bên ngoài
Có thể ghi xóa 100.000 lần với kiểu bộ nhớ chương trình Enhanced Flash
1.000.000 lần ghi xóa với kiểu bộ nhớ EEPROM
Dữ liệu EEPROM có thể được lưu trữ hơn 40 năm
Có thể tự lập lập trình lại dưới sự điều khiển của phần mềm
Trang 13Nạp chương trình ngay trên mạch điện ICSP (In - Circuit Serial Programming) thông qua 2chân
Nguồn đơn 5V cho mạch lập trình nối tiếp
Watchdog Timer (WDT) với bộ dao động RC tích hợp sẵn trên chip cho hoạt động đáng tíncậy
Năng lượng thấp, công nghệ Flash/EEPROM tốc độ cao
Thiết kế hoàn toàn tĩnh
Khoảng điện áp hoạt động từ 2V đến 5.5V
Tiêu tốn năng lượng thấp
3.3 Sơ đồ chân Vi điều khiển PIC16F877A:
Hình 2.3.1 : Sơ đồ chân và hình dạng của PIC16F877A (40 pin)
Trang 14Hình 2.3.2 : Sơ đồ chân PIC16F877A (44 pin)
Trang 153.4 Sơ đồ khối Vi điều khiển PIC16F877A:
Hình 2.4.1 : Cấu trúc bên trong của PIC16F877A
Như đã nói ở trên, Vi điều khiển PIC có kiến trúc Harvard, trong đó CPU truy cập chươngtrình và dữ liệu trên hai bus riêng biệt, nên làm tăng đáng kể băng thông so với kiến trúc VonNeumann, trong đó CPU truy cập chương trình và dữ liệu trên cùng một bus
Việc tách riêng bộ nhớ chương trình và bộ nhớ dữ liệu cho phép số bit của từ lệnh có thể khácvới số bit của dữ liệu Ở PIC16F877A, từ lệnh dài 14 bit, từ dữ liệu 8 bit PIC16F877A chứa một
bộ ALU 8 bit và thanh ghi làm việc WR (Working Register) ALU là đơn vị tính toán số học vàlogic, nó thực hiện các phép tính số và đại số Boole trên thanh ghi làm việc WR và các thanh ghi
dữ liệu ALU có thể thực hiện các phép cộng, trừ, dịch bit và các phép toán logic
3.5 Tổ chức bộ nhớ:
Trang 162.5.1 Bộ nhớ chương trình:
Bộ nhớ chương trình của Vi điều khiển PIC16F877A là bộ nhớ Flash, dung lượng bộ nhớ 8Kword (1 word = 14 bit) và được phân chia thành nhiều trang (từ page 0 đến page 3) Như vậy, bộnhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh (vì 1 lệnh sau khi mã hóa sẽ códung lượng 1 word = 14 bit)
Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương trình cần có dunglượng 13 bit (PC <12:0>)
Khi Vi điều khiển được Reset, bộ đếm chương trình sẽ chỉ đển địa chỉ 0000H (Resetvector).Khi có ngắt xảy ra, bộ đếm chương trinhfsex chỉ đến địa chỉ 0004H (Interruptvector)
Bộ nhớ chương trình không bao gồm bộ nhớ stack và không được địa chỉ hóa bởi bộ đếmchương trình
Hình 2.5.1 : Bộ nhớ chương trình của PIC
Trang 17Bộ nhớ dữ liệu của Pic là bộ nhớ EEPROM được chia ra làm nhiều bank Đối vớiPIC16F877A, bộ nhớ dữ liệu chia làm 4 bank Mỗi bank có dung lượng 12 bytes, bao gồm cácthanh ghi có chức năng đặc biệt SFR (Special Function Register) nằm ở các vùng địa chỉ thấp vàcác thanh ghi mục đích chung GPR (General Purpose Register) nằm ở vùng địa chỉ còn lại trongbank Các thanh ghi SFR thường xuyên sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở tất
cả các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh củachương trình Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A như sau :
Hình 2.5.2 : Bộ nhớ dữ liệu của PIC
3.6 Các thanh ghi đặc biệt FSR:
Trang 18Hình 2.6.1 : Các thanh ghi đặc biệt ở Bank 0
Trang 19Hình 2.6.2 : Các thanh ghi đặc biệt ở Bank 1
Trang 20Hình 2.6.3 : các thanh ghi đặc biệt ở Bank 2 và Bank 33.7 Thanh ghi mục đích chung GPR:
Các thanh ghi này có thể truy xuất trực tiếp thông qua thanh ghi FSG (File Select Register).Đây là các thanh ghi dữ liệu thông thường, người sử dụng có thế tùy theo mục đích chương trình
mà có thể dùng các thanh ghi này để chứa các biến số, hằng số, kết quả hoặc các tham số phục vụcho chương trình
Trang 21Bộ nhớ Stack trong Vi điều khiển PIC họ 16F87xA có khả năng chứa được 8 địa chỉ và hoạtđộng theo cơ chế xoay vòng Nghĩa là giá trị cất vào bộ nhớ Stack lần thứ 9 sẽ ghi đè lên giá trịcất vào Stack lần đầu tiên và giá trị cất vào bộ nhớ Stack lần thứ 10 sẽ ghi đè lên giá trị cất vàoStack lần thứ 2
Cần chú ý là không có cớ hiệu nào cho biết trạng thái Stack, do đó ta không biết được khi nàoStack bị tràn Bên cạnh đó, tập lện của Vi điều khiển dòng PIC cũng không có lệnh POP hayPUSH, các thao tác với bộ nhớ Stack sẽ hoàn toàn được điều khiển bởi CPU
3.9 Các cổng xuất nhập của PIC16F877A:
Trang 22Hình 2.9.1 : Cấu trúc bên trong của PORTAPORTA gồm 6 chân từ RA0 đến RA5 Việc ghi giá trị vào thanh ghi TRISA sẽ quy định cácchân của PORTA là input hay output Việc đọc thanh ghi PORTA sẽ đọc trạng thái các chân ởPORTA Việc ghi giá trị vào thanh ghi PORTA sẽ thay đổi trạng thái của các chân PORTA.Riêng chân RA4 được tích hợp chức năng là chân cung cấp xung clock ngoài cho Timer 0(RA4/T0CKI) Những chân khác của PORTA được đa hợp với các chân ngõ vào Analog củaADC và chân ngõ vào của điện thế so sánh của bộ so sánh Comparator Hoạt động của nhữngchân này được quy định bằng những bit tương ứng trong các thanh ghi ADCCON1 và CMCON1.Khi các chân của PORTA được sử dụng làm ngõ vào Analog thì các bit trong thanh ghiTRISA phải được set bằng 1
Hình 2.9.2 : Chức năng và các thanh ghi liên quan đên PORTA
Trang 23Hình 2.9.3 : Cấu trúc bên trong của PORTBPORTB gồm 8 chân từ RB0 – RB7 Việc ghi giá trị vào thanh ghi TRISB sẽ quy định các châncủa PORTB là input hay output Việc đọc thanh ghi PORTB sẽ đọc trạng thái của các chân ởPORTB Việc ghi giá trị vào thanh ghi PORTB sẽ thay đổi trạng thái của các chân PORTB
Ba chân của PORTB được đa hợp với chức năng In-Circuit Debugger và Low VoltageProgramming Function là : RB3/PGM, RB6/PGC, RB7/PGD Mỗi chân PORTB có mộttransistor kéo lên VDD Chức năng này hoạt động khi bit RBPU (Option <7>) được xóa Chứcnăng này sẽ tự động được xóa khi PORTB được quy định là input
Bốn chân của PORTB từ RB7 đến RB4 có chức năng ngắt khi trạng thái chân PORTB thay đổi(Khi PORTB được quy định là output thì chức năng này không hoạt động) Giá trị chân củaPORTB được so sánh với giá trị đã được lưu trước đó, khi có sự sai lệch giữa 2 giá trị này, ngắt
sẽ xảy ra với cờ ngắt RBIF (INTCON <0>) được set lên Ngắt có thể làm cho VĐK thoát khỏitrạng thái SLEEP
Bất cứ sự truy xuất nào trên PORTB sẽ xóa trạng thái sai lệch, kết thúc ngắt và cho phép xóa
cờ ngắt RBIF
Trang 24Hình 2.9.4 : Chức năng và các thanh ghi liên quan đên PORTB
Hình 2.9.5 : Cấu trúc bên trong của PORTC
Trang 25PORTC gồm 8 chân từ chân RC0 – RC7 Việc ghi giá trị vào thanh ghi TRISC sẽ quy định cácchân của PORTC là input hay output Việc đọc thanh ghi PORTC sẽ đọc trạng thái của các chân
ở PORTC Việc ghi giá trị vào thanh ghi PORTC sẽ thay đổi trạng thái của các chân PORTC Các chân PORTC được đa hợp với các chức năng ngoại vi
Khi các chức năng ngoại vi được cho phép ta cần quan tâm chặc chẽ tới giá trị các bit củathanh ghi TRISC Một số chức năng ngoại vi sẽ ghi đè giá trị 0 lên các bit của thanh ghi TRISC
và mặc định các chân này là output, ngoài ra một số chức năng ngoại vi khác sẽ tự động mặc địnhmột số chân là ngõ vào Do đó cần xem kỹ các tính năng của các hàm ngoại vi để thiết lập giá trịcác bit trong thanh ghi TRISC cho thích hợp
Hình 2.9.6 : Chức năng và các thanh ghi liên quan đên PORTC
Hình 2.9.7 : Cấu trúc bên trong của PORTD
Trang 26PORTD gồm 8 chân từ chân RD0 – RD7 Bên cạnh chức năng là port xuất nhập, PORTD còn
có thể hoạt động như một cổng song song bằng cách set các bit PSPMODE (TRISE <4>), trongchế độ này buffer ngõ vào là TTL PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP(Parallel Slave Port)
Hình 2.9.8 : Chức năng và các thanh ghi liên quan đên PORTD
Hình 2.9.9 : Cấu trúc bên trong của PORTE
Trang 27PORTE có 3 chân được cấu hình như các chân xuất nhập thông thường
Các chân PORTE có thể trở thành các chân điều khiển cho cổng song song của VĐK khi bitPSPMODE (TRISE <4>) được set bằng 1 Trong chế độ này, người sử dụng phải đảm bảo cácchân của PORTE là ngõ vào
Ngoài ra các chân PORTE còn có thể được cấu hình như là các ngõ vào Analog, tại chế độnày, khi đọc giá trị của các chân này sẽ cho ta giá trị là 0
Thanh ghi TRISE quy định chức năng xuất nhập của PORTE ngay cả khi nó được sử dụng nhưcác ngõ vào Analog Phải đảm bảo các chân này được quy định là ngõ vào trong chế độ này
Hình 2.9.10 : Chức năng và các thanh ghi liên quan đên PORTE3.10 Bộ định thời:
Timer0 là một trong ba bộ đếm hoặc bộ định thời của VĐK PIC16F877A Timer0 là bộ đếm 8bit được kết nối với bộ chia tần số (prescaler) 8 bit Cấu trúc của Timer0 cho phép ta lựa chọnxung clock tác động và cạnh tích cực của xung clock Ngắt Timer0 sẽ xuất hiện khi Timer0 bịtràn Bit TMR0IE (INTCON <5>) là bit điều khiển của Timer0 TMR0IE = 1 cho phép ngắtTimer0 tác động, TMR0IE = 0 không cho phép ngắt Timer0 tác động
Trang 28Hình 2.10.1 : Cấu trúc bên trong của Timer0
Chú ý : Các bước viết chương trình dùng Timer0 :
• Chọn chia tần OPTION_REG <2÷0> (PSP2:PSP0)
• Đặt giá trị vào thanh ghi TMR0
• Cho phép bộ định thời Timer0 hoạt động (OPTION_REG <5> = 0)
• Kiểm tra đếm xong chưa ? Kiểm tra cờ tràn
Hình 2.10.2 : Các thanh ghi liên quan đến Timer0
Trang 292.10.2 Timer1:
Timer1 là bộ định thời 16 bit, giá trị của Timer1 sẽ được lưu trong 2 thanh ghi(TMR1h:TMR1L) Cờ ngắt của Timer1 là bit TMR1IF (PIR1 <0>) Bit điều khiển của Timer 1 làTMR1IE (PIE <0>) Tương tự như Timer0, Timer1 cũng có 2 chế độ hoạt động : chế độ định thờivới xung kích là xung clock của oscillator (tần số của Timer bằng ¼ tần số của oscillator) và chế
độ đếm (counter) với xung kích là xung được lấy từ bên ngoài thông qua chânRC0/T1OSO/T1CKI (cạnh tác động là cạnh lên) Việc lựa chọn xung tác động (tương ứng vớiviệc lựa chọn chế độ hoạt độnglà Timer hay Counter) được điều khiển bởi bit TMR1CS (T1CON
<1>)
Hình 2.10.3 : Cấu trúc bên trong của Timer1
Chú ý : Các bước viết chương trình Delay dùng Timer 1 :
• Chọn chia tần thông qua thanh ghi T1CON
• Đặt giá trị vào thanh ghi TMR1 (8 bit cao đưa vào TMR1H, 8 bit thấp đưa vào thanh ghiTMR1L)
• Cho phép bộ định thời Timer1 hoạt động (set bit T1CON <0>)
• Kiểm tra đếm xong chưa ? Kiểm tra cờ tràn ?
Hình 2.10.4 : Các thanh ghi liên quan đến Timer1
Timer2 là bộ định thời 8 bit và được hỗ trợ hai bộ chia tần số prescaler và postcaler Thanh ghichứa giá trị của Timer2 là TMR2 Bit cho phép ngắt Timer2 tác động là TMR2ON (T2CON
Trang 30<2>) Cờ ngắt của Timer2 là bit TMR2IF (PIR <1>) Xung ngõ vào (tần số bằng ¼ tần sốoscillator) được đưa qua bộ chia tần số prescaler 4 bit (với các tỉ số chia tần là 1:1, 1:4, 1:16 vàđược điều khiển bởi các bit T2CKPS1:T2CKPS0 (T2CON <1:0>))
Hình 2.10.5 : Cấu trúc bên trong của Timer2
Hình 2.10.6 : Các thanh ghi liên quan đến Timer23.11 Tổng quan về 1 số đặc tính của CPU:
Đây là các bit dùng để lựa chọn các đặc tính của CPU Các bit này được chứa trong bộ nhớchương trình tại địa chỉ 2007h và chỉ có thể được truy xuất trong quá trình lập trình cho vi điềukhiển Chi tiết về các bit này như sau :
Bit 13 CP: (Code Protection)
Trang 31• 1 : tắt chế độ bảo vệ mã chương trình.
• 0 : bật chế độ bảo vệ mã chương trình
Bit 12, 5, 4: không quan tâm và được mặc định mang giá trị 0
Bit 11 DEBUG (In-circuit debug mode bit)
• 1:không cho phép, RB7 và RB6 được xem như các pin xuất nhập bình thường
• 0:cho phép, RB7 và RB6 là các pin được sử dụng cho quá trình debug
Bit 10-9 WRT1:WRT0 Flash Program Memory Write Enable bit
• 11: Tắt chức năng chống ghi, EECON sẽ điều khiển quá trình ghi lên toàn bộ nhớ chương trình
• 10: chỉ chống từ địa chỉ 0000h:00FFh
• 01: chỉ chống ghi từ địa chỉ 0000h:07FFh
• 00: chỉ chống ghi từ địa chỉ 0000h:0FFFh
Bit 8 CPD Data EEPROM Memory Write Protection bit
• 1: Tắt chức năng bảo vệ mã của EEPROM
• 0: Bật chức năng bảo vệ mã
Bit 7 LVP Low-Voltage (Single supply) In-Circuit Serial Programming Enable bit:
• 1: Cho phép chế độ nạp điện áp thấp, pin RB3/PGM được sử dụng cho chế độ này
• 0: Không cho phép chế độ nạp điện áp thấp, điện áp cao được đưa vào từ pin , pin RB3 làpin I/O bình thường
Bit 6 BODEN Brown-out Reset Enable bit
• 1: cho phép BOR (Brown-out Reset)
• 0: không cho phép BOR
Bit 3 Power-up Timer Enable bit
PIC16F877A có khả năng sử dụng một trong 4 loại oscillator, đó là:
• LP: (Low Power Crystal)
• XT: Thạch anh bình thường
• HS: (High-Speed Crystal)
• RC: (Resistor/Capacitor) dao động do mạch RC tạo ra
Trang 32Có nhiều chế độ reset vi điều khiển, bao gồm:
• Power-on Reset POR (Reset khi cấp nguồn hoạt động cho vi điều khiển) reset trong quátrình hoạt động
• từ chế độ sleep
• WDT reset (reset do khối WDT tạo ra trong quá trình hoạt động)
• WDT wake up từ chế độ sleep
• Brown-out reset (BOR)
Hình 2.11.2 : Mạch reset qua pin
Ngoại trừ reset POR trạng thái các thanh ghi là không xác định vàWDT wake up không ảnhhưởng đến trạng thái các thanh ghi, các chế độ reset còn lại đều đưa giá trị các thanh ghi về giá trịban đầu được ấn định sẵn Các bit và chỉ thị trạng thái hoạt động, trạng thái reset của viđiều khiển và được điều khiển bởi CPU
• reset: Khi pin ở mức logic thấp, vi điều khiển sẽ được reset Tín hiệu reset được cung cấpbởi một mạch ngoại vi với các yêu cầu cụ thể sau:
• Không nối pin trực tiếp lên nguồn VDD
• R1 phải nhỏ hơn 40 K để đảm bảo các đặc tính điện của vi điều khiển
Trang 33• R2 phải lớn hơn 1 K để hạn dòng đi vào vi điều khiển.
• reset còn được chống nhiễu bởi một bộ lọc để tránh các tín hiệu nhỏ tác động lên pin Power-on reset (POR): Đây là xung reset do vi điều khiển tạo ra khi phát hiện nguồn cung cấpVDD Khi hoạt động ở chế độ bình thường, vi điều khiển cần được đảm bảo các thông số về dòngđiện, điện áp để hoạt động bình thường Nhưng nếu các tham số này không được đảm bảo, xungreset do POR tạo ra sẽ đưa vi điều khiển về trạng thái reset và chỉ tiếp tục hoạt động khi nào cáctham số trên được đảm bảo
Power-up Timer (PWRT): đây là bộ định thời hoạt động dựa vào mạch RC bên trong vi điềukhiển Khi PWRT được kích hoạt, vi điều khiển sẽ được đưa về trạng thái reset PWRT sẽ tạo ramột khoảng thời gian delay (khoảng 72 ms) để VDD tăng đến giá trị thích hợp
Oscillator Start-up Timer (OST): OST cung cấp một khoảng thời gian delay bằng 1024 chu kìxung của oscillator sau khi PWRT ngưng tác động (vi điều khiển đã đủ điều kiện hoạt động) đểđảm bảo sự ổn định của xung do oscillator phát ra Tác động của OST còn xảy ra đối với PORreset và khi vi điều khiển được đánh thức từ chế đợ sleep OST chỉ tác động đối với các lọaioscillator là XT, HS và LP
Brown-out reset (BOR): Nếu VDD hạ xuống thấp hơn giá trị VBOR (khoảng 4V) và kéo dàitrong khoảng thời gian lớn hơn TBOR (khoảng 100 us), BOR được kích hoạt và vi điều khiểnđược đưa về trạng thái BOR reset Nếu điện áp cung cấp cho vi điều khiển hạ xuống thấp hơnVBOR trong khoảng thời gian ngắn hơn TBOR, vi điều khiển sẽ không được reset Khi điện ápcung cấp đủ cho vi điều khiển hoạt động, PWRT được kích hoạt để tạo ra một khoảng thời giandelay (khoảng 72ms) Nếu trong khoảng thời gian này điện áp cung cấp cho vi điều khiển lại tiếptục hạ xuống dưới mức điện áp VBOR, BOR reset sẽ lại được kích hoạt khi vi điều khiển đủ điện
áp hoạt động Một điểm cần chú ý là khi BOR reset được cho phép, PWRT cũng sẽ hoạt động bấtchấp trạng thái của bit PWRT
Hình 2.11.3 : Sơ đồ các chế độ reset của PIC16F877A
Tóm lại để vi điều khiển hoạt động được từ khi cấp nguồn cần trải qua các bước sau:
Trang 343.12 Ngắt (Interrupt):
Đầu tiên, Ngắt (interrupt) là gì ? Nó thật sự có ý nghĩa giống như tên gọi của nó Một interrupt
là một tác vụ xử lý hay là một tín hiệu xử lý mà nó có thể bắt con PIC dừng lại những gì đanglàm để làm một công việc khác Một ví dụ dễ hiểu, hãy lấy sinh hoạt hằng ngày của bạn, giả sửbạn đang ngồi ở nhà, rồi bạn đang tán gẫu với ai đó, thình lình chuông điện thoại reo, bạn ngưngcuộc nói chuyện lại, nhấc điện thoại lên và nói chuyện với người gọi đến Khi bạn kết thúc cuộcnói chuyện bằng điện thoại, bạn lại quay trở về tiếp tục tán gẫu với người đã nói chuyện với bạntrước khi điện thoại reo Bây giờ bạn hãy tưởng tượng, chương trình chính là quá trình tán gẫucủa bạn với người bạn ngồi ở nhà, điện thoại reo tạo ra một interrupt và thủ tục interruptlaf cuộcnói chuyện với người ở đầu dây bên kia, khi kết thúc cuộc nói chuyện bằng điện thoại bạn quay
về “chương trình chính” để tiếp tục tán gẫu
Ví dụ này giải thích chính xác một interrupt tạo ra một tiến trình xử lý như thế nào ? Mộtchương trình chính đang chạy, thực hiện một vài chức năng nào đó trên mạch điện nhưng khiinterrupt xảy ra, chương trình chính sẽ tạm ngưng và ngay lúc đó một thủ tục khác được thựchiện, khi thủ tục này kết thúc con PIC sẽ quay lại chương trình chính
Con PIC có 15 nguồn ngắt, khi ngắt được xảy ra cần : Khai báo ngắt (Set các bit điều khiển IEtương ứng) và có cờ ngắt tác động (IF), để biết ngắt như thế nào, chúng ta cần xem sơ đồ sau :
Hình 2.12.1 : Giản đồ ngắtCác bit điều khiển ngắt :
• Bit GIE : INTCON <7> : Cho phép ngắt toàn cục
• Bit PEIE : INTCON <6> : Cho phép ngắt ngoại vi
• Bit RBIE : INTCON <3> : Cho phép ngắt PORTB
• Bit INTE : INTCON <4> : Cho phép ngắt RB0
• Bit TMR0IE : INTCON <5> : Cho phép ngắt Timer0
• Bit FEIE : PIE2 <4> : Cho phép ngắt EEPROM
• Bit PSPIE : PIE1 <7> : Cho phép ngắt truyền song song
• Bit ADIE : PIE1 <6> : Cho phép ngắt chuyển đổi ADC
Trang 35• Bit RCIE : PIE1 <5> : Cho phép ngắt nhận nối tiếp
• Bit TXIE : PIE1 <4> : Cho phép ngắt truyền nối tiếp
• Bit SSPIE : PIE1 <3> : Cho phép ngắt truyền nhận nối tiếp đang bận
• Bit CCP1IE : PIE1 <2> : Cho phép ngắt bộ CCP1
• Bit TMR2IE : PIE1 <1> : Cho phép ngắt Timer2
• Bit TMR1IE : PIE1 <0> : Cho phép ngắt Timer1
• Bit CCP2IE : PIE2 <0> : Cho phép ngắt bộ CCP2
• Bit BCLIE : PIE2 <3> : Cho phép ngắt truyền nhận nối tiếp xảy ra
• Bit CMIE : PIE2 <6> : Cho phép ngắt bộ so sánh
Các bit cờ ngắt :
• Bit RBIF : INTCON <0> : Cờ ngắt PORTB
• Bit INTF : INTCON <1> : Cờ ngắt RB0
• Bit TMR0IF : INTCON <2> : Cờ ngắt Timer0
• Bit FEIF : PIR2 <4> : Cờ ngắt EEPROM
• Bit PSPIF : PIR1 <7> : Cờ ngắt truyền song song
• Bit ADIF : PIR1 <6> : Cờ ngắt chuyển đổi ADC
• Bit RCIF : PIR1 <5> : Cờ ngắt nhận nối tiếp
• Bit TXIF : PIR1 <4> : Cờ ngắt truyền nối tiếp
• Bit SSPIF : PIR1 <3> : Cờ ngắt truyền nhận nối tiếp đang bận
• Bit CCP1IF : PIR1 <2> : Cờ ngắt CCP1
• Bit TMR2IF : PIR1 <1> : Cờ ngắt Timer2
• Bit TMR1IF : PIR1 <0> : Cờ ngắt Timer1
• Bit CCP2IF : PIR2 <0> : Cờ ngắt CCP2
• Bit BCLIF : PIR2 <3> : Cờ ngắt truyền nhận nối tiếp xảy ra
• Bit CMIF : PIR2 <6> : Cờ ngắt bộ so sánh
=> Dựa vào sơ đồ trên, chúng ta có thể set bit tương ứng để khai báo ngắt
Cấu trúc chương trình có dùng ngắt :
ORG 0000H ; Địa chỉ vector Reset
GOTO MAIN ; Nhảy vào chương trình chính
;………INTERRUPT ROUTINE…………
ORG 04H ; Địa chỉ vector ngắt
• Lưu các giá trị vào tạm thời vào Ram nội (nếu các giá trị này thay đổi khi thực thi chương trìnhngắt)
Trang 36nó đã ra đi
3.13 Tập lệnh của Vi điều khiển PIC:
2.13.1 Vài nét sơ lược về tập lệnh của Vi điều khiển PIC:
Như đã trình bày ở trên PIC là vi điều khiển có tập lệnh rút gọn RISC (Reduced Instruction SetComputer), bao gồm 35 lệnh và có thể được phân ra thành 3 nhóm cơ bản:
• Nhóm lệnh thao tác trên bit
• Nhóm lệnh thao tác trên byte
• Nhóm lệnh điều khiển
Đối với dòng vi điều khiển PIC16Fxxx, mỗi lệnh được mã hóa thành 14 bit word, bao gồm cácbit opcode (dùng để xác định lệnh nào được mã hóa) và các bit mô tả một hay vài tham số củalệnh Đối với nhóm lệnh thao tác trên byte, ta có 2 tham số f (xác định địa chỉ byte cần thao tác)
và d (xác định nơi chứa kết quả thực thi lệnh) Nếu d = 0, kết quả sẽ được đưa vào thanh ghi W.Nếu d = 1, kết quả được đưa vào thanh ghi được mô tả bởi tham số f
Hình 2.13.1 : Cơ chế mã hóa lệnh của PIC 16FxxxĐối với nhóm lệnh thao tác trên bit, ta có hai tham số b (xác định bit cần thao tác) và f (xácđịnh địa chỉ byte dữ liệu cần thao tác)
PIC16Fxxx
Đối với nhóm lệnh điều khiển chỉ có một tham số duy nhất là k (k có thể là 8 bit trong trườnghợp các lệnh bình thường hay 11 bit trong trường hợp là lệnh CALL và lệnh GOTO) dùng để mô
tả đối tượng tác động của vi điều khiển (một label, một hằng số nào đó)
Mỗi lệnh sẽ được vi điều khiển thực thi xong trong vòng một chu kì lệnh, ngoại trừ các lệnhlàm thay đổi giá trị bộ đếm chương trình PC cần 2 chu kì lệnh Một chu kì lệnh gồm 4 xung clockcủa oscillator Ví dụ ta sử dụng oscillator có tần số 4 MHz thì tần số thực thi lệnh sẽ là 4MHz/4 =
1 MHz, như vậy một chu kì lệnh có thời gian 1 uS
Trang 37Các lệnh thao tác trên một thanh ghi bất kì đều thực hiện cơ chế Read-Modify-Write, tức làthanh ghi sẽ được đọc, dữ liệu được thao tác và kết quả được đưa vào thanh ghi chứa kết quả (nơichứa kết quả tùy thuộc vào lệnh thực thi và tham số d) Ví dụ như khi thưc thi lệnh “CLRFPORTB”, vi điều khiển sẽ đọc giá trị thanh ghi PORTB, xóa tất cả các bit và ghi kết quả trở lạithanh ghi PORTB Sau đây ta sẽ đi sâu vào cấu trúc, cú pháp và tác động cụ thể của từng lệnh.
Tác dụng: cộng giá trị hai thanh ghi W và thanh ghi f Kết quả được chứa trong thanh ghi W nếu
d = 0 hoặc thanh ghi f nếu d =1
Tác dụng: thực hiện phép toán AND giữa các giá trị chứa trong hai thanh ghi W và f
Kết quả được đưa vào thanh ghi W nếu
d=0 hoặc thanh ghi f nếu d = 1
Bit trạng thái: Z
Lệnh BCF
Cú pháp: BCF f,b (0 ≤ f ≤ 127, 0 ≤ b ≤ 7)
Tác dụng: xóa bit b trong thanh ghi f về giá trị 0
Bit trạng thái: không có
Lệnh BSF
Cú pháp: BSF f,b (0 ≤ f ≤ 127, 0 ≤ b ≤ 7)
Tác dụng: set bit b trong trnh ghi f
Bit trạng thái: không có
Lệnh BTFSS
Cú pháp: BTFSS f,b (0 ≤ f ≤ 127, 0 ≤ b ≤ 7)
Tác dụng: kiểm tra bit b trong thanh ghi f
Trang 38Nếu bit b bằng 0, lệnh tiếp theo được thực thi Nếu bit b bằng 1, lệnh tiếp theo được bỏ qua vàthay vào đó là lệnh NOP.
Bit trạng thái: không có
Lệnh BTFSC
Cú pháp: BTFSC f,b (0 ≤ f ≤ 127, 0 ≤ b ≤ 7)
Tác dụng: kiểm tra bit b trong thanh ghi f Nếu bit b bằng 1, lệnh tiếp theo được thực thi Nếu bit
b bằng 0, lệnh tiếp theo được bỏ qua và thay vào đó là lệnh NOP
Bit trạng thái: không có
Lệnh CALL
Cú pháp: CALL k (0 ≤ k ≤ 2047)
Tác dụng: gọi một chương trình con Trước hết địa chỉ quay trở về từ chương trình con (PC+1)được cất vào trong Stack, giá trị địa chỉ mới được đưa vào bộ đếm gồm 11 bit của biến k và 2 bitPCLATH<4:3>
Bit trạng thái: không có
Trang 39Cú pháp: DECFSZ f,d (0 ≤ f ≤ 127, d∈[0,1])
Tác dụng: gía trị thanh ghi f được giảm 1 đơn vị Nếu kết quả sau khi giảm khác 0,
lệnh tiếp theo được thực thi, nếu kết quả bằng 0, lệnh tiếp theo không được thực thi và thay vào
đó là lệnh NOP Kết quả được đưa vào thanh ghi W nếu d = 0 hoặc thanh ghi f nếu d = 1
Bit trạng thái: không có
Lệnh GOTO
Cú pháp: GOTO k (0 ≤ k ≤ 2047)
Tác dụng: nhảy tới một label được định nghĩa bởi tham số k và 2 bit PCLATH <4:3>
Bit trạng thái: không có
Bit trạng thái: không có
Trang 40Bit trạng thái: không có