LẬP TRÌNH PIC VI MẠCH VỚI CCS C

Micro chip PIC với CCSC Chuẩn bị cho những người không muốn lập trình thông tin chi tiết về các ví dụ mã của thông tin mạch trong một ebook

Cuốn sách này được thực hiện bởi nhóm PICPROJE như là một đóng góp giáo dục. Cộng tác viên bạn bè của chúng tôi .. (sắp xếp ABC) Coskun-choáng ngợp-caffeine-Gsev-phiêu lưu-the-Kurumahmut Microcozmoz-Auto-Oyhan-Honeycomb-Kính Picus-in-the-Zia speedyx-Timpat
Mục lục Lịch sử
lời nói đầu Tại sao C? Phát triển chương trình dựa trên PICmicro MCU dựa trên PC Phát triển sản phẩm Thuật ngữ Thuật toán kiểm tra và kiểm tra mã C Tiêu chuẩn mã hóa Celler
lời nói đầu Tại sao C? Phát triển chương trình dựa trên PICmicro MCU dựa trên PC Phát triển sản phẩm Thuật ngữ Thuật toán kiểm tra và kiểm tra mã C Tiêu chuẩn mã hóa Celler
C
Cấu trúc mẫu của
các chương trình C Các thành phần của một chương trình C
#pragma
main ()
#include
printf Các
biến chức năng Các
hằng số
Các chú thích Các
hàm
C Lệnh
Cấu trúc mẫu của
các chương trình C Các thành phần của một chương trình C
#pragma
main ()
#include
printf Các
biến chức năng Các
hằng số
Các chú thích Các
hàm
C Lệnh
Biến
kiểu dữ liệu
biến mà có Thông báo
làm nhiệm vụ biến
Sắp xếp
typedef
Loại Chuyển đổi
kiểu dữ liệu
biến mà có Thông báo
làm nhiệm vụ biến
Sắp xếp
typedef
Loại Chuyển đổi
Chức năng Chức năng
Chức
năng Nguyên mẫu Sử dụng
Đối số Hàm
Trả về Giá trị từ Hàm Chức năng
Hiện đại và Cổ điển
Chức
năng Nguyên mẫu Sử dụng
Đối số Hàm
Trả về Giá trị từ Hàm Chức năng
Hiện đại và Cổ điển
Toán tử
Số học
quan hệ
logic
Các toán tử logic
tăng và giảm các
ưu tiên của toán tử
Số học
quan hệ
logic
Các toán tử logic
tăng và giảm các
ưu tiên của toán tử
Các câu lệnh điều khiển chương trình
nếu
nếu có thì
sao?
cho chu kỳ
vòng lặp while cho chu trình
do-while
Sử dụng các biểu thức điều khiển chương trình
Break
Continue
Null
Return
nếu
nếu có thì
sao?
cho chu kỳ
vòng lặp while cho chu trình
do-while
Sử dụng các biểu thức điều khiển chương trình
Break
Continue
Null
Return
Series / Qatts
Dòng
một
chiều Qatters Dòng Multidimensional Dòng
thường Series
Qatari
Dòng
một
chiều Qatters Dòng Multidimensional Dòng
thường Series
Qatari
con trỏ con trỏ
con
trỏ và mảng
con trỏ đến các hàm
con
trỏ và mảng
con trỏ đến các hàm
Cấu trúc / Connections
Building Khái niệm cơ bản
gợi ý xây dựng
các cấu trúc lồng nhau
Liên minh Khái niệm cơ bản
gợi ý Thống nhất
Building Khái niệm cơ bản
gợi ý xây dựng
các cấu trúc lồng nhau
Liên minh Khái niệm cơ bản
gợi ý Thống nhất
PICmicro MCU cụ thể C
Đầu vào và đầu ra
C và Assembler
xử lý bit Advanced
Timers,
A / D chuyển đổi
dữ liệu thông tin liên lạc
I ² C giao tiếp
SPI giao tiếp
PWM
LCD Lái xe
Ngắt
Libraries
Đầu vào và đầu ra
C và Assembler
xử lý bit Advanced
Timers,
A / D chuyển đổi
dữ liệu thông tin liên lạc
I ² C giao tiếp
SPI giao tiếp
PWM
LCD Lái xe
Ngắt
Libraries
lời tựa
Tại sao C?
Ngôn ngữ C được phát triển bởi Dennis Ritchie và Brian Kernighan vào đầu những năm 1970 tại Bell Laboratories. Một trong những nền tảng ứng dụng đầu tiên là PDP-11 chạy trong môi trường UNIX. Kể từ khi được giới thiệu, một ngôn ngữ phát triển ứng dụng đã được chứng minh đã phát triển và chuẩn hóa cho đến cuối ngành công nghiệp CNTT. Nó là một môi trường phát triển chi phí thấp cho PC, C ++ và các phiên bản tiêu chuẩn ANSI khác. C được thiết kế như một ngôn ngữ di động để các chương trình có thể được chuyển từ máy này sang máy khác với những thay đổi tối thiểu.
Đây là một tính năng rất tốt khi làm việc với PC và máy tính lớn. Nhưng vi điều khiển và vi xử lý là các loại khác nhau. Luồng chương trình chính sẽ không thay đổi, nhưng các cài đặt khác nhau và điều khiển cổng / môi trường là vi điều khiển cụ thể. Một ví dụ về điều này là thanh ghi hướng cổng cho MCU PICmicro, trong đó 1 = đầu vào 0 = đầu ra, 0 = đầu vào 1 = đầu ra cho vi điều khiển H8.
Thực tế là các nhà sản xuất cung cấp tốc độ chương trình cao hơn với nhiều chương trình hơn và bộ nhớ RAM khiến ngôn ngữ C được sử dụng trong các ứng dụng vi điều khiển. Như một ví dụ truyền lại cho tôi – là một người không tin vào bất cứ điều gì – suydu: bạn có thể viết một chức năng hẹn giờ trong hội đồng trong hai tuần và trong C trong một khoảng thời gian ngắn. Vì vậy, bạn đang nói với tôi để có được một người xây dựng C ngay lập tức – tại sao bận tâm viết trong lắp ráp? Tạo mã ngắn hơn – một chương trình được viết bằng lắp ráp mất khoảng 20% ít không gian hơn so với chương trình được viết bằng C trung bình. Bộ nhớ chương trình tốt cho các mẫu cao cấp nhưng không tốt cho các mẫu máy cấp thấp
.
.
Phát triển chương trình dựa trên PICmicro MCU dựa trên PC
Các kỹ sư đang bắt đầu phát triển các sản phẩm với các đơn vị dựa trên PC vì tính khả dụng của các thiết bị cơ bản (bàn phím, bộ xử lý, bộ nhớ, I / O, máy in và màn hình). Phần mềm phát triển sản phẩm bao gồm chuẩn bị và phạm sai lầm.
Phát triển một sản phẩm dựa trên PIC bắt đầu với MCU được hình thành dưới dạng thiết bị đầu vào / đầu ra để giao tiếp với thế giới bên ngoài. Khi một lập trình viên máy tính biên dịch và chạy một chương trình nói “Hello World”, nó sẽ ngay lập tức thấy thông báo trên màn hình. Để xem thông điệp của lập trình viên PIC, bạn phải tạo giao diện RS232,
thiết lập cổng giao tiếp trong PIC và kết nối bo mạch phát triển với cổng giao tiếp trên PC.
thiết lập cổng giao tiếp trong PIC và kết nối bo mạch phát triển với cổng giao tiếp trên PC.
Bạn có cần nhiều rắc rối này? Tôi dường như nghe bạn nói. Eger chúng tôi đã sử dụng toàn bộ PC (với màn hình và bàn phím) trong trường hợp tích hợp 40 chân nên chúng tôi chưa có khả năng này. Chúng tôi sẽ tiếp tục sử dụng PIC hoặc vi điều khiển tương tự cho các ứng dụng chi phí thấp và di động.
Các công cụ phát triển cho các hệ thống dựa trên PIC cung cấp một số tùy chọn đơn giản hóa cơ bản cho nhà phát triển, chẳng hạn như các hệ thống dựa trên PC, ngoại trừ các thư viện đồ họa.
Phát triển sản phẩm
Phát triển sản phẩm là sự kết hợp giữa trải nghiệm và may mắn. Một số phần chương trình rất nhỏ tốn rất nhiều thời gian phát triển, nhưng họ có một phần lớn trong sản phẩm xuất sắc.
Có một nhu cầu để phát triển một sản phẩm: thời gian – hòa bình và yên tĩnh – tư duy logic và, quan trọng nhất, là một sự hiểu biết đầy đủ về nhu cầu. Đối với tôi, cách dễ nhất để bắt đầu là làm sạch một vài trang với ý tưởng.
bắt đầu bằng cách gãi các giải pháp có thể và cẩn thận xem xét từng giải pháp để tìm ra sự lựa chọn đơn giản nhất, đáng tin cậy nhất. Trong khoảnh khắc này, những ý tưởng khác có thể là những suy nghĩ đẹp đẽ bên trong thùng rác. Vẽ sơ đồ dòng chảy, sơ đồ khối, kết nối I / O. Tạo thẻ nguyên mẫu của bạn với tất cả các chân I / O. Sẽ rất hữu ích khi thiết kế thẻ của bạn để có thể thay đổi các chân I / O.
Bắt đầu viết chương trình của bạn – dưới dạng các khối có thể kiểm tra – và dần dần tạo chương trình của bạn bằng cách phát triển nó. Điều này giúp bạn tiết kiệm từ việc dọn dẹp một chương trình dòng 2000 trong một lần!
Nếu Eger là thế hệ đầu tiên của bạn – THEN PROMOTE – hãy làm những việc đơn giản như tự làm quen với các lệnh trước một ứng dụng khổng lồ, nháy đèn LED bằng các nút để học kỹ thuật lắp ráp và gỡ lỗi. Xây dựng chương trình của bạn bằng các bước đơn giản. Đảm bảo sơ đồ lưu lượng của bạn được cập nhật.
tư tưởng
Một ý tưởng có thể EVRYKA! phong cách, hoặc người khác có thể được sinh ra như là một nhu cầu.
Thuật ngữ cơ bản cần thiết trước khi quá trình thiết kế được hiểu phải được hiểu. Trong trường hợp này, ngôn ngữ PIC (bộ lệnh, điều khoản và bộ phát triển) phải được hiểu đầy đủ trước khi bạn bắt đầu thiết kế cơ sở MCU của PICmicro. Bây giờ chúng ta bắt đầu với các thuật ngữ chung, sự thật về PIC và sự khác biệt giữa các bộ vi xử lý và các hệ thống vi điều khiển.
ngữ
Một số thuật ngữ cơ bản được sử dụng
Nếu không có phần mềm vi điều khiển thì không có gì khác ngoài nhựa, kim loại và cát không hoạt động. Kiểm soát bởi phần mềm, có một khu vực ứng dụng không giới hạn.
I / O là chân MCU giao tiếp với thế giới bên ngoài. Nó có thể được đặt làm đầu vào hoặc đầu ra. Trong hầu hết các trường hợp, các đơn vị I / O cho phép vi điều khiển giao tiếp, điều khiển và nhận thông tin.
Phần mềm là thông tin cần thiết cho vi điều khiển để vận hành và vận hành. Ứng dụng hoặc sản phẩm thành công phải không có lỗi. Phần mềm có thể được viết bằng nhiều ngôn ngữ khác nhau, chẳng hạn như C, pascal, cơ bản hoặc lắp ráp (phía trên mã máy bao gồm các mã nhị phân)
Phần cứng bao gồm vi điều khiển, bộ nhớ, các thành phần giao diện, nguồn điện, mạch điều khiển tín hiệu và các thành phần cho phép hệ thống vận hành và giao tiếp với thế giới bên ngoài.
Bạn có thể ném thiết bị ra khỏi một quan điểm (đặc biệt nếu nó không hoạt động).
Simulator Môi trường phát triển MPLAB® có bộ mô phỏng riêng cho phép vi điều khiển xử lý nội bộ. Đây là một cách hay để kiểm tra thiết kế của bạn nếu bạn biết điều gì sẽ xảy ra.
Trong mạch Emulator là một thiết bị rất hữu ích kết nối máy tính với vi điều khiển cắm vào ổ cắm. Nó cho phép phần mềm chạy trên PC nhưng dường như được chạy bởi vi điều khiển trên bảng mạch. ICE cho phép bạn chạy từng bước chương trình và theo dõi cách vi điều khiển giao tiếp với thế giới bên ngoài.
Nó là đơn vị cho phép lập trình viên tải chương trình vào bộ nhớ vi điều khiển và chạy mà không cần trợ giúp ICE. có thể có hình dạng, kích cỡ và giá khác nhau. Các mô hình PICSTART PLUS và PROMATE II của Microchip được kết nối với cổng nối tiếp.
Tệp nguồn là một chương trình được viết bằng ngôn ngữ assembly mà bạn có thể hiểu được. Tệp nguồn phải được xử lý để vi điều khiển hiểu được.
Assembler / Compiler là một gói phần mềm chuyển đổi tập tin nguồn thành tập tin đối tượng. Nó có chức năng kiểm soát lỗi và báo cáo lỗi xảy ra trong quá trình lắp ráp. MPASM là phần mềm lắp ráp mới nhất hỗ trợ tất cả các PIC của Microchip.
Các tập tin đối tượng là tập tin được tạo ra bởi Assembler / Compiler và các tập tin định dạng mà các lập trình viên, giả lập hoặc ICE có thể hiểu được. Phần mở rộng của tệp có thể là .OBJ hoặc .HEX, tùy thuộc vào chỉ thị của trình biên dịch.
Tệp danh sách là tệp chứa tất cả các lệnh trong tệp nguồn được tạo bởi trình biên dịch / trình biên dịch, các phần tử thập lục phân của chúng và các giải thích bạn đã viết. Phần mở rộng của tệp là .LST.
các tệp khác là các tệp lỗi chứa phần mở rộng tệp .ERR. Các tệp .COD được trình giả lập sử dụng.
Lỗi là của bạn do bạn tạo ra. Có nhiều lý do cho việc viết sai lầm đơn giản cho việc sử dụng ngôn ngữ lập trình sai. Phần lớn được ghi lại bởi trình biên dịch và được hiển thị trong tệp .LST.
Bộ vi xử lý Một bộ vi xử lý hoặc máy tính kỹ thuật số bao gồm ba đơn vị cơ bản. MiB (CPU), I / O và bộ nhớ – và các mạch hỗ trợ khác

TiPiK BiR MiKROlememCi SiSTEMi
Đầu vào / đầu ra (I / O) là một đơn vị bao gồm các chức năng kỹ thuật số, analog và đặc biệt liên lạc với thế giới bên ngoài.
Đơn vị xử lý trung tâm (MIB) là một đơn vị có thể làm việc với các định dạng dữ liệu 16 bit ở 4 hoặc 8 chữ số, thực hiện các phép tính và xử lý dữ liệu và là trung tâm của hệ thống.
Bộ nhớ có thể ở dạng RAM, ROM, EPROM, EEPROM hoặc kết hợp chúng, và có thể lưu trữ các chương trình và dữ liệu.
Bộ dao động cung cấp tần số đồng hồ cần thiết cho bộ vi xử lý hoạt động. Dao động có thể được tạo ra với các thành phần khác nhau hoặc có thể thu được như mô-đun đúc sẵn.
Các mạch khác được kết hợp với bộ vi xử lý là bộ đếm thời gian giám sát – ngăn cản hệ thống bị khóa – là mạch đệm cho địa chỉ và bus dữ liệu – cho phép nhiều chip trên cùng một đường dẫn hoạt động mà không làm hỏng lẫn nhau.
Khi một bộ vi xử lý được nhắc đến, điều này được hiểu rằng MIB chủ yếu được đề cập đến. I / O và bộ nhớ bao gồm các chip riêng biệt và yêu cầu địa chỉ và bus và các mạch giải mã địa chỉ hoạt động bình thường.
vi điều khiển
PICmicro MCU và vi điều khiển MIB khác trong một chip duy nhất (CPU), bộ nhớ, bộ dao động, cơ quan giám sát và thiết bị I / O hosting. Như một kết quả, tiết kiệm không gian giảm thời gian thiết kế và giảm các vấn đề về khả năng tương thích với các đơn vị bên ngoài đạt được nhưng trong một số trường hợp kích thước bộ nhớ và cố định
hạn chế / suất Tôi O sụp đổ vì các giới hạn của thiết kế.
hạn chế / suất Tôi O sụp đổ vì các giới hạn của thiết kế.
một loạt các nhà phát triển gia đình PIC vi điều khiển sẽ cần tôi nhất / O, bộ nhớ và chức năng đặc biệt.
Tại sao sử dụng PIC
Hiệu quả mã là một vi điều khiển 8 bit dựa trên kiến trúc PIC Harvard. – điều đó có nghĩa là có nhiều cách khác nhau cho bộ nhớ và dữ liệu. Tốc độ cao vì nó có thể truy cập vào chương trình và bộ nhớ dữ liệu cùng một lúc. Trong bộ vi điều khiển truyền thống, chương trình và bộ nhớ dữ liệu sử dụng cùng một bus. So với PICmicro này, nó làm chậm tốc độ xuống ít nhất 2 lần.
Tất cả các lệnh an toàn được lưu trữ trong bộ nhớ chương trình có chiều rộng 12 hoặc 14 bit. Vì vậy, bỏ qua các dữ liệu chương trình để chương trình dữ liệu ‘s, có một cơ hội tốt để chạy các lệnh như vậy. Điều này có thể xảy ra trong vi điều khiển 8bit sử dụng kiến trúc Harvard không phải là trong chương trình đề cập đến cách khác nhau.
Chỉ có 33 lệnh bạn cần học để lập trình cho nhóm lệnh 16C5X và gia đình 16CXX rộng 14bit. Các lệnh khác với lệnh CALL, GOTO và bit mục đích kiểm tra (BTFSS, INCFSZ, vv) được thực hiện trong một bước lệnh đơn.
Tốc độ PIC bao gồm một mạch 4-chia giữa bộ dao động và đường dẫn đồng hồ bên trong. Điều này làm cho nó dễ dàng hơn để tính toán thời gian lệnh, đặc biệt là khi sử dụng một tinh thể 4Mhz. Trong trường hợp này, mỗi bước lệnh (chu kỳ) giữ 1uS (tức là 1μs). Khi một tinh thể như PIC 20Mhz được sử dụng,
nó là một bộ xử lý rất nhanh có khả năng hoạt động 5 triệu lệnh trong một giây . – gần như gấp đôi 386SX33!
nó là một bộ xử lý rất nhanh có khả năng hoạt động 5 triệu lệnh trong một giây . – gần như gấp đôi 386SX33!
Hoạt động tĩnh PIC là một vi điều khiển hoàn toàn tĩnh; nói cách khác, nếu bạn dừng tần số đồng hồ, tất cả nội dung đăng ký vẫn giữ nguyên. Trong thực tế bạn không làm chính xác điều này, bạn đặt PIC vào chế độ ngủ – nó dừng tần số đồng hồ và
thiết lập một số cờ để PIC biết nó là gì trước khi ngủ . Khi ở chế độ ngủ, PIC rút ra ít dòng hơn 1uA.
thiết lập một số cờ để PIC biết nó là gì trước khi ngủ . Khi ở chế độ ngủ, PIC rút ra ít dòng hơn 1uA.
khả năng đầu ra PIC có công suất đầu ra cao và LED triac vv nó có thể dẫn trực tiếp. Lên đến 25mA từ bất kỳ pin I / O nào, hoặc dòng 100mA đến 200mA từ toàn bộ chip.
Các tùy chọn bao gồm tốc độ, nhiệt độ, áo khoác, dòng I / O, chức năng hẹn giờ, tùy chọn bộ nhớ và tùy chọn bộ nhớ cho phù hợp với hầu hết mọi nhu cầu của bạn.
Tính linh hoạt PIC là một vi điều khiển rất hiệu quả và linh hoạt với số lượng cao. Nó có thể được sử dụng thay cho một vài cổng logic, đặc biệt là trong các ứng dụng mà không gian là quan trọng.

PIC16F84A (14BIT) KHỐI CHÂN
Bảo mật MCU PICmicro có một trong những tính năng bảo vệ mã an toàn nhất trong ngành. Bộ nhớ chương trình không thể đọc được khi bit bảo vệ được lập trình một lần.
PIC phát triển có thể được xây dựng trong cửa sổ hoặc FLASH để phát triển và xây dựng OTP (một lần lập trình) cho sản xuất. các công cụ phát triển có thể dễ dàng và có giá hợp lý cho người dùng gia đình.
Kiểm tra và kiểm tra mã
Bắt trình biên dịch C, trình giả lập trong mạch
và các thiết bị cần thiết như chi phí ban đầu để thụ thai của C có thể
làm hoảng sợ con mắt của người đó trong giai đoạn đánh giá của dự án . Trình biên dịch C được cung cấp trên đĩa và có sẵn trên internet.
và các thiết bị cần thiết như chi phí ban đầu để thụ thai của C có thể
làm hoảng sợ con mắt của người đó trong giai đoạn đánh giá của dự án . Trình biên dịch C được cung cấp trên đĩa và có sẵn trên internet.
Tiêu chuẩn mã hóa C
Viết một chương trình giống như xây dựng một ngôi nhà – nếu những điều cơ bản vẫn còn nguyên vẹn, mọi thứ diễn ra tốt đẹp. các đề xuất sau đây được lấy từ tài liệu tiêu chuẩn C ++ và tôn trọng PIC.
Tên – Đảm bảo rằng tên phù hợp với chức năng Tên là trung tâm lập trình và cần được xử lý theo mục đích của chương trình. Bạn có thể sử dụng chữ thường viết hoa để tăng khả năng đọc.
Kiểm soát lỗi dễ đọc hơn HATAKONTROL. Một lần nữa một tiền tố trường hợp thấp hơn có thể được sử dụng để tăng khả năng đọc.
g gLog toàn cầu;
r Tham khảo rStatus ();
s salalin tĩnh;
r Tham khảo rStatus ();
s salalin tĩnh;
Dấu ngoặc đơn {}
Dấu ngoặc đơn sử dụng phương thức UNIX truyền thống;
Dấu ngoặc đơn sử dụng phương thức UNIX truyền thống;
if (condition) {
……………
}
……………
}
hoặc dễ đọc
if (condition)
{
……………
}
{
……………
}
Lề
Mở văn bản từ bên trong sử dụng lề là cần thiết để tăng khả năng đọc của chương trình.
Mở văn bản từ bên trong sử dụng lề là cần thiết để tăng khả năng đọc của chương trình.
Độ dài đường truyền Để
tương thích màn hình và máy in, đảm bảo rằng độ dài của đường không vượt quá 78 ký tự.
tương thích màn hình và máy in, đảm bảo rằng độ dài của đường không vượt quá 78 ký tự.
Khác Nếu biểu mẫu Nếu
bạn muốn chụp trong bất kỳ trường hợp nào, cụm từ khác khác không được bao gồm trong các ifs trước đó.
bạn muốn chụp trong bất kỳ trường hợp nào, cụm từ khác khác không được bao gồm trong các ifs trước đó.
if (kosul)
{
}
else if (kosul)
{
}
else
{
………… / * không được đề cập ở trên * /
}
{
}
else if (kosul)
{
}
else
{
………… / * không được đề cập ở trên * /
}
định dạng điều kiện
giá trị không đổi nếu trình biên dịch cho phép Loại bình đẳng / bất bình đẳng mAlArIndA so sánh bên trái. Nếu một trong các dấu = bị lãng quên, trình biên dịch sẽ báo cáo lỗi. Nó cũng đáng để chìm trong bồn rửa chén.
giá trị không đổi nếu trình biên dịch cho phép Loại bình đẳng / bất bình đẳng mAlArIndA so sánh bên trái. Nếu một trong các dấu = bị lãng quên, trình biên dịch sẽ báo cáo lỗi. Nó cũng đáng để chìm trong bồn rửa chén.
if (6 == ErrorNo) …
Đặt giá trị ban đầu cho biến Trước khi đánh giá tất cả các biến để tránh các giá trị ngẫu nhiên.
int a = 6, b = 0;
Giải thích là
nửa còn lại của câu chuyện. Bạn có biết chương trình của bạn hoạt động như thế nào không? Bạn có nhớ hai tuần hoặc hai năm sau đó không? Người khác có thể xem chương trình của bạn như thế nào không? sử dụng nhận xét để làm cho công việc trong tương lai của bạn dễ dàng hơn, tìm ra lỗi và cải thiện sản phẩm của bạn trong tương lai.
nửa còn lại của câu chuyện. Bạn có biết chương trình của bạn hoạt động như thế nào không? Bạn có nhớ hai tuần hoặc hai năm sau đó không? Người khác có thể xem chương trình của bạn như thế nào không? sử dụng nhận xét để làm cho công việc trong tương lai của bạn dễ dàng hơn, tìm ra lỗi và cải thiện sản phẩm của bạn trong tương lai.
Khái niệm cơ bản
Tất cả các chương trình máy tính có một điểm khởi đầu. Điểm khởi đầu này là vectơ đặt lại trong bộ vi điều khiển. Các vector thiết lập lại của gia đình PIC16CXX 14bit là 00h, và vector thiết lập lại của 12bit PIC16C5X và 12C50X gia đình là địa chỉ bộ nhớ cao nhất. – 1FFh, 3FFh, 7FFh
Tất cả các chương trình máy tính có một điểm khởi đầu. Điểm khởi đầu này là vectơ đặt lại trong bộ vi điều khiển. Các vector thiết lập lại của gia đình PIC16CXX 14bit là 00h, và vector thiết lập lại của 12bit PIC16C5X và 12C50X gia đình là địa chỉ bộ nhớ cao nhất. – 1FFh, 3FFh, 7FFh
Điểm kết thúc là nơi chương trình dừng lại nếu chương trình eger chỉ hoạt động một lần (ví dụ, như một thường trình thiết lập tốc độ truyền thông). Các chương trình khác, chẳng hạn như kiểm soát ánh sáng giao thông, trở về điểm bắt đầu liên tục.
Ví dụ lập trình thường được sử dụng đầu tiên trong các ngôn ngữ cấp cao là in “Hello World” trên màn hình.
Khi bạn sử dụng PC với C, tất cả màn hình, bàn phím và bộ xử lý đều được kết nối. Tất cả những gì bạn phải làm là kết nối các chương trình và thiết bị ngoại vi. Khi bạn phát triển một chương trình cho một MCU PICmicro hoặc các hệ thống vi xử lý / vi điều khiển khác
, bạn cũng phải tạo phần cứng vật lý để kết nối vi mạch với thế giới bên ngoài từ chương trình . Một hệ thống tương tự được hiển thị bên dưới.
, bạn cũng phải tạo phần cứng vật lý để kết nối vi mạch với thế giới bên ngoài từ chương trình . Một hệ thống tương tự được hiển thị bên dưới.

Một chương trình đơn giản mà tôi sử dụng trong khi dạy PIC là một chương trình ghi nút với một nút. Bắt đầu với một chương trình đơn giản – không phải với chương trình dòng 2000!
Nước trong lắp ráp:

Nước trong C:

mã trở thành:

Phiên bản biên dịch có nhiều bộ nhớ hơn so với assembly – 14 từ C, 9 từ Assembly. Nhưng khi các chương trình bắt đầu phát triển, chúng hiệu quả hơn trong việc sử dụng mã C.

1. Nguyên tắc của C
Trong phần này, một số khía cạnh cơ bản của lập trình C sẽ được đề cập. Mục tiêu là cung cấp cho bạn kiến thức C cơ bản và để cung cấp cho bạn một sự hiểu biết về các bài tập trong tương lai.
Các chủ đề được đề cập là:
Cấu trúc chương trình
Các thành phần của một chương trình C
#pragma
chính
# include các biến biến
printf chỉ thị Sửa các chú thích Các hàm C Lệnh
Các thành phần của một chương trình C
#pragma
chính
# include các biến biến
printf chỉ thị Sửa các chú thích Các hàm C Lệnh
1.1 Cấu trúc của chương trình C
Tất cả các chương trình C chứa các chỉ thị tiền xử lý, các khai báo, các mô tả, các biểu thức, các câu lệnh và các hàm.
Tất cả các chương trình C chứa các chỉ thị tiền xử lý, các khai báo, các mô tả, các biểu thức, các câu lệnh và các hàm.
chỉ thị tiền xử lý của
các chỉ thị tiền xử lý là một lệnh gửi đến tiền xử lý C (chương trình biên soạn cấu thành bước đầu tiên). Sử dụng rộng rãi nhất của hai tiền xử lý chỉ thị #define, để xác định một định danh tùy chỉnh thay vì một văn bản và cho biết #include được sử dụng để bao gồm các chương trình hoặc các thành phần chương trình vào định nghĩa của một tập tin bên ngoài.
các chỉ thị tiền xử lý là một lệnh gửi đến tiền xử lý C (chương trình biên soạn cấu thành bước đầu tiên). Sử dụng rộng rãi nhất của hai tiền xử lý chỉ thị #define, để xác định một định danh tùy chỉnh thay vì một văn bản và cho biết #include được sử dụng để bao gồm các chương trình hoặc các thành phần chương trình vào định nghĩa của một tập tin bên ngoài.
Thông báo Với
Thông báo, các biến và chức năng được sử dụng trong chương trình, và các thuộc tính và tên của các loại được thiết lập. Các biến toàn cầu được định nghĩa bên ngoài các hàm và có giá trị cho đến khi kết thúc tệp từ nơi chúng được xác định. Các biến cục bộ được định nghĩa trong các hàm và có giá trị cho đến khi kết thúc hàm từ nơi chúng được định nghĩa.
Thông báo, các biến và chức năng được sử dụng trong chương trình, và các thuộc tính và tên của các loại được thiết lập. Các biến toàn cầu được định nghĩa bên ngoài các hàm và có giá trị cho đến khi kết thúc tệp từ nơi chúng được xác định. Các biến cục bộ được định nghĩa trong các hàm và có giá trị cho đến khi kết thúc hàm từ nơi chúng được định nghĩa.
Định nghĩa Một
mô tả của một biến hoặc hàm được thiết lập để bao gồm. Ngoài ra, bộ nhớ cần thiết cho các biến và chức năng được phân bổ.
mô tả của một biến hoặc hàm được thiết lập để bao gồm. Ngoài ra, bộ nhớ cần thiết cho các biến và chức năng được phân bổ.
Biểu thức
là một tổ hợp các toán hạng và toán hạng tạo ra một giá trị đơn.
là một tổ hợp các toán hạng và toán hạng tạo ra một giá trị đơn.
Báo cáo trạng thái
Biểu thức điều kiện cho phép kiểm soát luồng chương trình trong chương trình C.
Hàm
Hàm là tập hợp các khai báo, khai báo, biểu thức và câu lệnh trường hợp thực hiện một hoạt động cụ thể. Các dấu ngoặc đơn bao gồm phần thân của hàm. Các hàm không nhất thiết phải ở C.
Hàm là tập hợp các khai báo, khai báo, biểu thức và câu lệnh trường hợp thực hiện một hoạt động cụ thể. Các dấu ngoặc đơn bao gồm phần thân của hàm. Các hàm không nhất thiết phải ở C.
Chức năng chính
Tất cả các chương trình C phải có một hàm có tên chính và chương trình bắt đầu tại đây. Các dấu ngoặc kèm theo hàm chính xác định điểm bắt đầu và điểm kết thúc của chương trình.
Tất cả các chương trình C phải có một hàm có tên chính và chương trình bắt đầu tại đây. Các dấu ngoặc kèm theo hàm chính xác định điểm bắt đầu và điểm kết thúc của chương trình.
Ví dụ: Cấu trúc chương trình chung C

1.2 Các thành phần của chương trình C
Tất cả các chương trình C chứa các thành phần cần thiết như biểu thức và hàm. biểu thức thực sự là một phần của chương trình thực hiện các hoạt động. Tất cả các chương trình C đều chứa một hoặc nhiều hàm. Các hàm là các chương trình con gồm một hoặc nhiều biểu thức và được gọi bởi các phần khác của chương trình.
Tất cả các chương trình C chứa các thành phần cần thiết như biểu thức và hàm. biểu thức thực sự là một phần của chương trình thực hiện các hoạt động. Tất cả các chương trình C đều chứa một hoặc nhiều hàm. Các hàm là các chương trình con gồm một hoặc nhiều biểu thức và được gọi bởi các phần khác của chương trình.
Khi viết chương trình, tab, dòng trống và giải thích tăng khả năng đọc không chỉ cho bạn trong những ngày trong tương lai, mà còn cho những người khác đang kiểm tra chương trình của bạn cùng một lúc. Ví dụ sau minh họa các thành phần cần thiết của chương trình C.
#include
/ * Chương trình C đầu tiên của tôi * /
main ()
{
/ * Chương trình C đầu tiên của tôi * /
main ()
{
printf (“Hello World”);
}
}
Biểu thức #include cho trình biên dịch bao gồm tệp ‘ stdio.h ‘ trong chương trình.
Phần mở rộng .h chỉ định tệp tiêu đề. tệp tiêu đề chứa thông tin về các hàm chuẩn được sử dụng trong chương trình. Tệp tiêu đề đầu vào đầu ra tiêu chuẩn được gọi là stdio.h và chứa các hàm đầu vào đầu vào thường được sử dụng nhất. Chỉ chương trình
nên được sử dụng khi có các phần liên quan đến đầu vào / đầu ra tiêu chuẩn .
nên được sử dụng khi có các phần liên quan đến đầu vào / đầu ra tiêu chuẩn .
/ * biểu thức / biểu thức C đầu tiên của tôi là dòng mô tả cho C. Theo truyền thống, các khai báo nằm giữa các ký tự / * và * / . Các mô tả kiểu mới bắt đầu bằng // ký tự và được diễn giải cho đến cuối dòng. Tuyên bố không được trình biên dịch xem xét, và vì lý do này không có ảnh hưởng đến kích thước và tốc độ của mã được biên dịch.
Tất cả các chương trình C phải có hàm main (). Đây là điểm vào chương trình. Tất cả các hàm đều có cùng dạng.
FunctionName ()
{
code
}
{
code
}
Các biểu thức trong hàm được thực hiện tuần tự.
Các dấu ngoặc nhọn {và} trong C cho biết sự bắt đầu và kết thúc của các khối mã.
Cuối cùng printf (“Hello World”); Biểu thức là một biểu thức C điển hình. Hầu như tất cả các biểu thức C kết thúc bằng dấu chấm phẩy (;). Ký tự kết thúc dòng (CR + LF) không được công nhận là dấu kết thúc dòng C. Vì lý do này, các biểu thức không nhất thiết phải giống như một hàng rào ngang và có thể có một số biểu thức trên một dòng.
Ở cuối tất cả các biểu thức, có một dấu chấm phẩy (;) chỉ ra rằng trình biên dịch là ở cuối, và đồng thời tách biểu thức khỏi phần tử kia. Nếu dấu chấm phẩy bị bỏ qua, dòng tiếp theo sẽ thất bại. Câu lệnh if là một câu lệnh ghép và dấu chấm phẩy phải được đặt ở cuối các câu lệnh ghép.
if (BuDogruysa)
Thực hiện điều này ();
Thực hiện điều này ();
1.3 Lệnh #pragma
pragma yêu cầu trình biên dịch thực hiện một phép toán đặc biệt tại thời gian biên dịch, chẳng hạn như nói cho MCmic PICmicro nào đang được sử dụng
pragma yêu cầu trình biên dịch thực hiện một phép toán đặc biệt tại thời gian biên dịch, chẳng hạn như nói cho MCmic PICmicro nào đang được sử dụng
#pragma thiết bị PIC16C54
Trong CCS C, lệnh pragma không bắt buộc và được chấp nhận
theo cú pháp sau #device PIC16C54
theo cú pháp sau #device PIC16C54
1,4 chính ()
Mỗi chương trình phải có một chức năng chính chỉ xuất hiện một lần. () không thể có tham số giữa các dấu ngoặc đơn. void có thể được sử dụng để cho biết rằng không có tham số nào trong ngoặc đơn. Nó được phân loại là hàm chính, và các lệnh tiếp theo
phải nằm trong dấu ngoặc đơn {} .
phải nằm trong dấu ngoặc đơn {} .
Chính
{
lệnh
}
{
lệnh
}
1.5 #include
Chỉ một hàm trong mỗi chương trình phải là hàm chính. tệp tiêu đề chứa thông tin như các đối số đã truy xuất của các hàm (được chỉ ra bởi phần mở rộng * .h), các giá trị được trả về bởi các hàm và địa chỉ của các trình ghi của một mô hình PIC cụ thể.
#include <16c54 .h=””>
Thông tin này được trình biên dịch sử dụng để kết nối với tất cả các định nghĩa phần cứng và các chương trình nguồn.
#include <16c71 .h=””>
#include #use
rs232 (baud = 9600, xmit = PIN_B0, rcv = PIN_B1)
chính ()
{
printf (“Nhập ký tự:”);
trong khi (TRUE)
putc (toupper (getc ()));
}
#include #use
rs232 (baud = 9600, xmit = PIN_B0, rcv = PIN_B1)
chính ()
{
printf (“Nhập ký tự:”);
trong khi (TRUE)
putc (toupper (getc ()));
}
Các định nghĩa PIN_B0 và PIN_B1 được tìm thấy trong tệp tiêu đề 16C71.H. Hàm toupper cũng được chỉ định trong tệp tiêu đề CTYPE.H. Cả hai tệp tiêu đề nên được sử dụng để trình biên dịch biết về các hàm được sử dụng. Ngoài ra, nhiều trình biên dịch C yêu cầu sử dụng các tệp tiêu đề cho các hàm I / O như printf và putc, các hàm này được thêm vào các chương trình bằng lệnh #use rs232 và không yêu cầu tệp tiêu đề bên ngoài.
#include
bộ tiền xử lý chỉ định rằng tệp tiêu đề có tên là file1 nằm trong thư mục tệp tiêu đề. Tệp tiêu đề trong ngoặc kép đánh dấu tên của thư mục nơi mã nguồn trình biên dịch được đặt.
#include “file2.h”
đầu tiên đề cập đến giao diện thư mục được sử dụng tại thời điểm đó. Nếu bạn cẩn thận, dấu chấm phẩy không được chèn sau chỉ thị #include. Lý do cho điều này là lệnh #include không phải là một câu lệnh C, mà là một chỉ thị tiền xử lý. Nội dung của toàn bộ tệp tiêu đề được thêm vào tệp nguồn tại thời gian biên dịch.
1.6 chức năng printf
Hàm printf là một hàm trong thư viện chuẩn cho phép gửi thông tin có thể in được. Định dạng chung cho printf () như sau:
printf (“mảng ký tự điều khiển”, đối số_list);
Chuỗi ký tự điều khiển là một chuỗi ký tự được đặt trong dấu ngoặc kép. Chuỗi này có thể chứa các kết hợp chữ cái, số và ký hiệu. Các ký hiệu đặc biệt được sử dụng với ký hiệu%. Hàm printf () phải là chuỗi ký tự điều khiển. Nếu các trình định dạng định dạng Eger
không được sử dụng, danh sách đối số có thể không có sẵn. Danh sách đối số có thể bao gồm các hằng số và các biến. Dưới đây là hai ví dụ về việc sử dụng hàm printf () với các hằng số và các biến:
không được sử dụng, danh sách đối số có thể không có sẵn. Danh sách đối số có thể bao gồm các hằng số và các biến. Dưới đây là hai ví dụ về việc sử dụng hàm printf () với các hằng số và các biến:
printf (“Hello World”);
printf (“Microchip® #% d number!”, 1);
printf (“Microchip® #% d number!”, 1);
Trình định dạng (% d) tùy thuộc vào loại dữ liệu được hiển thị. tất cả các đánh dấu định dạng và các kiểu dữ liệu liên quan được sử dụng trong C được hiển thị dưới đây:
printf () Định dạng đánh dấu
% C đơn nhân vật nhân vật
% d ký số nguyên thập phân
% f Floating point (ký hiệu thập phân)
Floating point% ee (ký hiệu mũ hay khoa học)
% unsigned thập phân số nguyên
% x unsigned thập lục phân số nguyên (chữ thường)
% X unsigned thập lục phân số nguyên (Hoa letter)
Được sử dụng với% d,% u,% x để chỉ định các số nguyên dài trong l
% d ký số nguyên thập phân
% f Floating point (ký hiệu thập phân)
Floating point% ee (ký hiệu mũ hay khoa học)
% unsigned thập phân số nguyên
% x unsigned thập lục phân số nguyên (chữ thường)
% X unsigned thập lục phân số nguyên (Hoa letter)
Được sử dụng với% d,% u,% x để chỉ định các số nguyên dài trong l
Chú ý: sử dụng sau khi% ký tự 0 (zero) là số xác định có bao nhiêu zero gösterileceg trong dãy số. Số sau số 0 xác định số lượng chữ số được hiển thị.
printf (“12 hệ thập lục phân% 02x n”, 12);
Đầu ra của dòng chương trình này là: 12c là hệ thập lục phân (0c).
Chuỗi thoát:
ntới mới
t tab ngang
r vận chuyển trở lại
f formfeed
‘dấu nháy đơn
“dấu ngoặc kép
\ dấu gạch chéo ngược
%% dấu phần trăm
? Dấu hỏi
b backspace
0 ký tự null
v tab dọc
xhhh chèn mã HEX hhh
r vận chuyển trở lại
f formfeed
‘dấu nháy đơn
“dấu ngoặc kép
\ dấu gạch chéo ngược
%% dấu phần trăm
? Dấu hỏi
b backspace
0 ký tự null
v tab dọc
xhhh chèn mã HEX hhh
Các trình định dạng định dạng cũng có thể được sử dụng dưới dạng% [flags] [width] [precision].
printf (trường “% field% 6.4f n”);
biến trường sẽ được viết bằng 6 chữ số và 4 chữ số thập phân.
Là “mặc định”, đầu ra của printf được gửi đến cổng RS232 được xác định cuối cùng. Các đầu ra cũng có thể được chuyển hướng đến một đầu ra khác thông qua bất kỳ hàm nào.
ví dụ:
void lcd_putc (char c)
{
// Chèn mã vào đầu ra một
// ký tự vào màn hình LCD ở đây
}
printf (lcd_putc, “value is% u”, value);
{
// Chèn mã vào đầu ra một
// ký tự vào màn hình LCD ở đây
}
printf (lcd_putc, “value is% u”, value);
1,7 biến
tên được đặt cho một vị trí cụ thể trong bộ nhớ. Vị trí bộ nhớ này có thể chứa các giá trị khác nhau theo khai báo của biến. Thông báo phải được thực hiện bằng ngôn ngữ C trước khi tất cả các biến được sử dụng.
khai báo biến cho trình biên dịch biết loại biến nào được sử dụng. Tất cả các khai báo biến phải kết thúc bằng dấu chấm phẩy (;). Các kiểu dữ liệu C cơ bản là char, int, float và long. Dạng chung của các khai báo biến như sau:
khai báo biến cho trình biên dịch biết loại biến nào được sử dụng. Tất cả các khai báo biến phải kết thúc bằng dấu chấm phẩy (;). Các kiểu dữ liệu C cơ bản là char, int, float và long. Dạng chung của các khai báo biến như sau:
gõ tên biến;
ví dụ về khai báo biến là lợi nhuận char; chúng ta có thể đưa ra một ví dụ trong đó biến số lợi nhuận được định nghĩa là ký tự (số nguyên không dấu 8 bit)
1.8 hằng số
Cố định là giá trị mà chương trình không thể thay đổi. ví dụ 25 là hằng số. Nó có thể là hằng số nguyên như -100 và 40, và nó thay đổi như 456.75
nó cũng có thể là các hằng số chấm. Các hằng số ký tự được biểu diễn bằng dấu nháy đơn: ‘A’ hoặc ‘&’.
Nếu chương trình biên dịch của bạn gặp phải một hằng số, nó phải quyết định kiểu hằng số này. Trình biên dịch C sẽ sử dụng kiểu dữ liệu nhỏ nhất có thể được đặt theo mặc định. ví dụ: một int của 15, một loại dài 64000 unsigned.
Các hằng số cũng có thể được xác định với câu lệnh #define:
#define giá trị thẻ
Chương trình biên dịch sẽ biên dịch giá trị được chỉ định bất cứ khi nào nó biên dịch với tên được viết trong phần nhãn.
#define TRUE 1
#define pi 3.14159265359
#define pi 3.14159265359
Hằng số C cho phép bạn viết 16 hoặc 8 căn cứ: các hằng số thập lục phân ‘0x’ phải bắt đầu bằng tiền tố. ví dụ 0xA4 là hằng số thập lục phân hợp lệ. Nó hỗ trợ hằng số chuỗi C cũng như hằng số. Hằng số chuỗi là các bộ ký tự được viết giữa dấu ngoặc kép.
Các hằng số được xác định bởi câu lệnh #define thực sự là những thay đổi văn học được thực hiện trước khi biên dịch. Các dòng bắt đầu bằng dấu # là các chỉ thị tiền xử lý trước.
Bạn có thể xác định bất kỳ văn bản nào với # từ xác định. ví dụ:
#define YASLI_ không (YAS <65 font=”” nbsp=””>. . . . nếu KHÔNG CHO printf (“GENC”);
#define dữ liệu không được lưu trữ trong bộ nhớ. Nó được xử lý tại thời điểm biên dịch.
Để lưu hằng số vào ROM, bạn sử dụng từ khóa const. ví dụ:
char const id [5] = {“1234”};
Có 5 vị trí bộ nhớ để lưu bộ nhớ trong bộ nhớ. Vì ký tự khoảng trắng ( 0) được thêm vào cuối chỉ mục.
1.9 Nhận xét
Các chú thích được sử dụng để mô tả các hoạt động được thực hiện trong mã nguồn và hiển thị hoạt động của nó. Nhận xét bị bỏ qua bởi trình biên dịch. Có thể tìm thấy các nhận xét ở bất kỳ đâu ngoại trừ ở giữa từ khóa, chức năng hoặc tên biến. Nhận xét có thể bao gồm nhiều dòng và đôi khi
chúng cũng có thể được sử dụng để tạm thời xóa mã . Nhận xét có thể dài dòng và đôi khi chúng có thể được sử dụng để tạm thời xóa một dòng mã. Nhận xét không được nhúng. Có hai loại giải thích. Biểu mẫu đầu tiên được hỗ trợ bởi tất cả các trình biên dịch C.
chúng cũng có thể được sử dụng để tạm thời xóa mã . Nhận xét có thể dài dòng và đôi khi chúng có thể được sử dụng để tạm thời xóa một dòng mã. Nhận xét không được nhúng. Có hai loại giải thích. Biểu mẫu đầu tiên được hỗ trợ bởi tất cả các trình biên dịch C.
/ * Đây là một bình luận * /
Định dạng thứ hai được hỗ trợ bởi nhiều trình biên dịch.
// Đây là
bài tập bình luận : Các loại bình luận nào sau đây hợp lệ, không hợp lệ?
// Đây là
bài tập bình luận : Các loại bình luận nào sau đây hợp lệ, không hợp lệ?
/ * Nhận xét ngắn * /
/ * Rất rất rất rất rất rất rất rất rất rất rất dài bình luận *
/ * Nhận xét này / * không hợp lệ * / * /
1.10 Chức năng
Các hàm là các cấu trúc cơ bản của các chương trình C. Mỗi chương trình C chứa ít nhất một hàm, main (). Nhiều chương trình bạn viết sẽ có nhiều hơn một hàm. Cấu trúc chung của chương trình C chứa nhiều hàm như sau:
main ()
{
fonksiyon1 ()
{
}
fonksiyon2 ()
{
}
}
{
fonksiyon1 ()
{
}
fonksiyon2 ()
{
}
}
main () là hàm đầu tiên được gọi khi chương trình được thực hiện. function1 () và function2 () khác có thể được gọi bất cứ nơi nào trong chương trình.
Theo truyền thống, hàm main () không được gọi bởi hàm khác, nhưng không có giới hạn trong C. hai hàm C sau đây có thể nhìn thấy:
main ()
{
{
printf ( “C”);
fonksiyon1 ();
printf ( “cốc”);
}
functionKnown1 ()
{
printf (“tình yêu”);
}
fonksiyon1 ();
printf ( “cốc”);
}
functionKnown1 ()
{
printf (“tình yêu”);
}
Khi một hàm có dấu ngoặc đơn cuối cùng (}), chương trình tiếp tục hoạt động từ dòng nơi hàm được gọi. Xem Phần 3.1.
1.11 Macro
#define là một chỉ thị mạnh mẽ như đã thấy trong các tập trước. Nó làm cho chỉ thị C xác định thậm chí còn mạnh mẽ hơn bằng cách cung cấp việc thu thập tham số. Khi được sử dụng với các tham số, chúng được gọi là macro. Macro được sử dụng để tăng khả năng đọc của các chương trình hoặc để dễ dàng viết. Một macro đơn giản
Ví dụ:
#define var (x, v) không dấu int x = v;
(A, 1);
Có (b, 2);
var (c, 3);
(A, 1);
Có (b, 2);
var (c, 3);
sau đây là tương đương:
unsigned int a = 1;
int b = 2;
unsigned int c = 3;
int b = 2;
unsigned int c = 3;
ví dụ sau định nghĩa một hàm ngắn:
#define MAX (A, B) (A> B)? A: B)
z = MAX (x, y); // Giá trị z, x và y sẽ là giá trị lớn nhất
1.12 Đánh giá tình huống
Trong C, chỉ thị trình biên dịch trước được bao gồm để bao gồm hoặc loại trừ các phần nhất định của mã trong khi biên dịch. Hãy xem xét ví dụ sau:
#define HW_VERSION 5
#if HW_VERSION> 3
output_high (PIN_B0);
#else
output_low (PIN_B0);
#endif
#if HW_VERSION> 3
output_high (PIN_B0);
#else
output_low (PIN_B0);
#endif
Trong chương trình trên, chỉ có một dòng sẽ được biên dịch tùy thuộc vào giá trị HW_VERSION. Có thể có hàng tá biểu thức #if trong cùng một mã và cùng một mã
có thể được biên dịch cho phần cứng. Các biểu thức #if được đánh giá khi mã được biên dịch, không giống như các biểu thức bình thường. Biểu thức #ifdef được sử dụng để xác định xem có thành ngữ nào được định nghĩa trước đó hay không.
Ví dụ:
#define DESCRIPTION
#ifdef DESCRIPTION
printf (“Chạy hàm X”);
#endif
#ifdef DESCRIPTION
printf (“Chạy hàm X”);
#endif
ĐỊNH NGHĨA Trong ví dụ dòng #define này sẽ bị bỏ qua bởi hàm printf khi nó được lấy ra trình biên dịch dòng RỦI RO (tức là không biên dịch).
1.13 Khả năng tương thích phần cứng
Trình biên dịch cần thông tin về phần cứng để mã biên dịch đúng cách. Một chương trình điển hình bắt đầu bằng nước:
#include <16c74 .h=””> #fuses
hs, nowdt #use
delay (đồng hồ = 800000)
hs, nowdt #use
delay (đồng hồ = 800000)
dòng đầu tiên cho phép tệp chứa các chỉ thị xác định các chân của bộ xử lý được sử dụng sẽ được thêm vào chương trình. Trong dòng thứ hai, các giá trị cài đặt của PICmicro®MCU được gán. Trong ví dụ này, một bộ dao động tốc độ cao được sử dụng và bộ đếm thời gian giám sát bị tắt. Dòng cuối cùng xác định tốc độ của bộ dao động. Đây là một ví dụ khác:
#use RS232 (buad = 9600, Xmit = PIN_C6, RCV = PIN_C7)
#use I2C (thạc sĩ, CL = PIN_B6 SDA = PIN_B7)
#use I2C (thạc sĩ, CL = PIN_B6 SDA = PIN_B7)
Trong các ví dụ trong cuốn sách này, các dòng mô tả phần cứng được hiển thị ở trên không được hiển thị.
Ngoài ra, các biến C có thể được định nghĩa và hướng đến các thanh ghi điều khiển phần cứng. Các biến này có thể bằng byte hoặc bit. Khi đã xác định, chúng có thể được sử dụng trong chương trình như các biến thông thường khác. Như một ví dụ
#bit carry = 3.0; Biến cờ mang trong STATUS đăng ký được xác định
#byte portb = 6; PortB được khai báo như thể nó đã được sửa đổi
#byte intcon = 11; Đăng ký INTCON được định nghĩa là biến
#byte portb = 6; PortB được khai báo như thể nó đã được sửa đổi
#byte intcon = 11; Đăng ký INTCON được định nghĩa là biến
1.14 C Từ khóa
Chuẩn ANSI C định nghĩa 32 từ khóa C. Trong C, một số từ được sử dụng bởi trình biên dịch trong việc định nghĩa các kiểu dữ liệu hoặc trong các chu kỳ. Tất cả các từ khóa C nên được viết bằng chữ thường. Nói chung, một khóa bổ sung được gán cho trình biên dịch C để tận dụng các tính năng của bộ xử lý. Trong ví dụ này, một bộ dao động tốc độ cao được sử dụng và bộ đếm thời gian giám sát bị tắt. Dòng cuối cùng xác định tốc độ của bộ dao động.
Chuẩn bị bởi: PicProject Team – Nhờ những người đã thông qua Eclipse Cảm ơn CCS Translation Book CCS C với lập trình PIC Microchip
Tệp tải xuống danh sách LINK (ở định dạng TXT) link-33.zip mật khẩu-pass: 320volt.com