Tải bản đầy đủ - 100 (trang)
2 CHƯƠNG TRÌNH DỊCH NGÔN NGỮ BẬC CAO PCW-H

2 CHƯƠNG TRÌNH DỊCH NGÔN NGỮ BẬC CAO PCW-H

Tải bản đầy đủ - 100trang

Nghiên cữu ứng tiling vi (ỉiêu khiển PIC trong đo lường & điều khiển

ngoại vi như bộ mở rộng vào/ra, bộ nhớ EEPROM I2C, bộ nhớ chuẩn Micro-wire,

thậm chí cá vi mạch quản lý giao thức TCP/IP hoặc vi mạch điều khiển bus USB.

Các hàm (lựng sán là một trong các điểm rất mạnh của PCW-H, cho phép

người lập trình hoàn thành các mã chương trình trong một thời gian ngắnnhất. Một

ví dụ là hàm delay để tạo một khoảng thời gian trẻ. Sử dụng bộ dịch PCW-H việc

duy nhất cần làm là khai báo tần số xung nhịp cấp cho vi xử lý.

Ví dụ khai báo tần số cho hàm delay

#use



d e l a y (c lo c k = 2 0 0 0 0 0 0 0



)



//sử dụna xung nhịp tần só



20



MHz



delay_m s ( 1 0 0 ); / / t ạ o một khoảns trỗ 100 ms.



Một ví dụ khác về hàm dựng sẩn là việc khai báo sử dụng cổng vào ra nối

tiếp. Neirời lập trình chí việc khai báo sử dụng cổng nào cho vào/ra, tốc độ truyền,

kiểm tra chẩn lẻ... một đoạn mã sẽ được trình biên dịch tự động tạo ra trong khi biên

dịch đê’ quán lý việc hoạt động của cổng vào ra nối tiếp đã khai báo. Đối với các họ

PIC sần khối UART bên trong, trình biên dịch PCW-H tự động nhộn biết và tạo ra

mã chương trình sử đụng phần cứng UART này. Nếu ở các vi điều khiển không có

phẩn cứng UART, cổng nối tiếp được thực hiện bằng phần mềm.

Ví dụ dòng lệnh khai báo cổng nối tiếp sau: Kuse

x m i t = P iN



B I,



rc v = P iN _ B 0 )



RS-232 (baud=9600,



khởi tạo cổng nối tiếp với tốc độ 9600 baud, chân BI



cùa vi xứ lý là chân truyền Tx, chân B0 là chân nhận Rx. Kể từ sau khi khai báo

cổng nối tiếp, thiết bị vào/ra chuẩn được gán cho cổng, ví dụ gặp dòng lệnh sau:



s p r i n t f ( " K ie m



tra



cong



noi



vi diều khiển aửi các ký tự của chuồi



tie p " )



" K ie m



;



tra



cong n o i t i e p " ra cổng nôi



tiếp. Hàm y=gets() nhận một chuỗi vào từ cổng nối tiếp.

Các hàm chức năng dựng sẵn để truy nhập đến các phần cứng bên trong của

vi xử lý P1C như hàm set_timerl(x) hoặc x=get_timerl() để ghi vào và đọc ra giá trị

X ở



bộ đếm Timer 1.



45



Ni>hién cứu ứng dụng vi diều khiển PIC trong (lo lường á diều khiển



Háng 4: Danh sách các hàm dựng sẵn trona PCW-M

Vào/ra nòi tiếp



Vào/ra chuẩn I2 C



Thao tác vào/ra



Vào/ra chuẩn SPI



ehuán RS-232



Í2c_starl()



output_low()



setup_spi()



gelc()



¡2c_stop()



output_high()



spi_read()



putcO



I2C_rcad



output_float()



spi_write()



getsQ



Í2c_wrile()



output_bit()



spi_data_is_in()



putsO



i2c_poll()



input()



Vào ra song song



printf()



output_X()



Slave sctup pspO



kbliito



input_X()



psp...input_full()



set_uarl_spccd()

perror



port_b_pullups()



psp_output_full()



set_tris_X()



psp_overf1ow()



Thao tác bit/byle



Thao tác timer



assert

Tạo trề



Điều khiến xử lý

slccpO



setup_timer_X()



delay_us()



reset_cpu()



shift_right()



set_timer_X()



d e la y m s O



restart_cause()



shift_Ieft()



get_timer_X()



delay_cycles()



disable_interrupts()



rotate_right()



sctup_counters()



enable_intcrrupts()



rotate_left()



sciup_wdt()



ext_int_cdi>c()



bit_clear()



restart_wdt()



read_bank()



hi t_set()



write_bank()



bit_test()



setup_ccpX()



labcl_address



swap()



set_pwmX_duty()



goto_address



makc8()



Capl u rc/Com pare/P'w M



make16()

make32()

Chuyên đoi A/D



So sánh tương tự



Bộ nhớ E E P R O M



Đióu khién I.C D



setup_adc_ports()



sc 1up_comparaior()



read_eeprom()



sctup_lcd( )



write_eeprom()



lcd_symbol( )

lcd_load()



setup _adc()

set_adc channeio



Tạo điện áp chuẩn



read_program_eeproni()



read_adc()



setup_vref()



write_program_eeprom()

read_calibration()



Việc sử cỉụng các hàm dựng sẵn thao tác đến các mạch ngoại vi tích hợp chỉ

hợp lệ khi lập trình cho bộ vi điều khiển có trang bị các mạch ngoại vi đó. Ví dụ câu

lệnh Setup_ADC() chỉ đúns khi lập trình trên vi điều khiến có khối ADC.

Trình biên dịch PCW-H là ngôn ngữ c nên có các thuộc tính của c bao gồm

các hàm chuẩn của ngôn ngữ c , các lệnh, các kiểu biến, các toán tử ...



46



Nghiên cứu ửníỊ dụng vi điêu khiển PIC trong do tường á điểu khiển

Báng 5: Các hàm c chuẩn của PCW-H.



Hàm toán



Hàm quản lý bộ nhớ



ato i()



ab s()



m e m se tO



sircp y O



ato l()



a b s 3 2 ()



m e m cp y O



stm cp y O



a to i3 2 ()



a c o s()



slrco p ỵ O



a to f()



a sin ()



slrcm pO



to lo w e r()



atan O



slricm pO



to u p p e rO



c e il()



slrn c m p i)



isa ln u m O



co s()



strca t()



isa lp h a O



e x p ()



slrslrO



isa m o u n g O



f!oor()



s tr c h r ( )



isd ig itO



la b s()



slrrch rO



islo w e r()



lo g ()



strto k O



issp aceO



lo g 1 0 0



strspnO



isu p p e rO



p w r()



strc s p rự )



isx d ig itO



sin ()



Các hàm x ứ lý chuỗi



Hàm xứ lý ký tư



slrlen O



strp b rk Q



s q r to



strlw r()



ta n ()



Các lệnh theo cú pháp của c chuẩn

.



IF, ELSE, WHILE, DO, SWITCH, CASE, FOR, RETURN, GOTO, BREAK,

CONTINUE.



Các toán tứ c ch uẩn





~ ++ —+ * / %



«



& I



»



.





A &&

< < = > > = = = !=



II ?:



.



= += -= *= /= %= » = « =



&= A= 1=



Các kieu biến trong c

-



short, in t i biến kiểu bit, nhận giá trị 0 hoăc 1.



-



char, in ts số nguyên 8 bít, không dấu.



-



ỉong, i n t l ó



số nguyên không dấu 16 bít.



-



signed long số nguyên có dấu 16 bit.



-



int32



-



signed int32 số nsuyên có dấu 32 bit.



-



float



sốneuyên không dấu 32 bit.



số dấu phẩy động 32 bit gồm 1 bit dấu, 7 bít đặc tính, 24 bit



(iịnh trị.



47



Nghiên cửu ứỉìiị dụniỊ vi điều khiển PỈC trong do lườnq & điền khiến

C ác kiêu d ữ liệu đặc biệt

.



TYPEDEF, STATIC, AUTO, CONST, ENUM, STRUCT, UNION



Các khii năng khác

Lập máng có tôi đa 5 chiều.

Dữ liệu kiểu cấu trúc và kiểu hợp có thể lổng nhau.

Dữ liệu kiểu bít trong dữ liệu kiểu cấu trúc.

4.3 BỘ NẠP TRÌNH CHO VI ĐlỂU KHIEN PIC



4.3.1 Khá năng nạp trình ICSP của PIC

Hầu hết các họ vi điều khiển Microchip PIC đều sử dụng phương pháp lập

trình nối tiếp trên mạch, viết tắt là ICSP Ụn-Circuií Serial Programming) đế nạp mã

lệnh vào bộ nhớ chươnc trình. Việc nạp trình ICSP thực hiện thông qua hai đường

cho xung nhịp và dữ liệu và ba đường khác cho việc cấp nguồn, nối đất và cấp điện

áp cao cho nạp trình. Do việc nạp trình khá thuận lợi nên việc nâng cấp phần mềm

cho vi điều khiển rất dễ thực hiện.

4.3.2 Bộ nạp trìn h SCH A ER

Bộ nạp trình cho flash PIC kiểu SCHAER có cấu tạo tương đối đơn giản, nối

với máy tính qua cổng song song.

Bộ nạp này hồ trợ các vi điều khiển PIC nạp trình theo phương pháp ICSP:

-



12F629,



12F675,



-



1 6 F 8 4 A, 1 6 F 8 4 A,



16F72,



16F73,



1 6 LF 8 4 A,



16F74,



16F76,



16F77.



1 6 F6 3 0 , 1 6 F 6 7 6 .



- 1 6 F 6 2 7 , 1 6 F 6 2 7 REV2 , 1 6 F 6 2 7 A, 1 6 F 6 2 8 , 1 6 F 6 2 8 REV2 , 1 6 F 6 2 8 A.

- 1 6 F 8 7 0 , 1 6 F 8 7 1 , 1 6 F 8 7 2 , 1 6 F 8 7 3 , 1 6 F 8 7 3 A, 1 6 F 8 7 4 , 1 6 F8 7 4 A, 1 6 F 8 7 6

- 1 6 F 8 7 6 A, 1 6 F 8 7 7 , 1 6 F8 7 7 A, 1 6 F 8 7 , 1 6 F8 8 , 1 6 F 8 1 8 , 1 6 F 8 1 9 .



Sơ đồ nguyên ]ý và hoạt động của mạch nạp trong phụ lục 4.



4.3.3 Chương trình nạp trình

Dữ liệu cần nạp tức là chương trình đã được dịch ra mã máy của vi điều khiển

thườne là các tệp theo định dạng INTEL HEX. Dưới đây là ví dụ một tệp dạng Intel

hex đã dịch cho vi điểu khiển PIC16F88, điều khiển tất cả các cổng của vi điều

khiến này chuyển mức cao thấp luân phiên theo chu kỳ 0,5 giây.

:1000000000308A00192800002230840000080319FB

:1000100018280130F80 0F7O1F7 0BOC28F8 0BOB2813

: 100020004 A3 CIF700F70B12280000000 08 OOBO92867



48



Nghien cứu ửni> clụniỊ VI (licit khiển PỈC troiìíị đo lường & diều khiến

: 1 0 0 0 3 0 0 0 0 0 3 4 3 4 0 1 1 F 3 0 8 3 0 5 8 3 1 6 9 F 0 1 9 B0 1 0 7 3 0 2 4

: 1 0 0 0 4 0 0 0 8 3 1 2 9 F0 0 0 0 3 0 6 5 0 0 6 6 0 0 8 0 3 0 8 3 1 6 9 F 0 0 9 9

:1 0 0 0 5 0 0 0 9 B0 1 3 3 1 2 1 F08 3 A3 9 9 F0 0 8 3 1 6 8 1 1 3 FF 3 0 DA

: 1 0 0 0 6 0 0 0 8 3 1 2 8 5 0 0 8 6 0 0 0 2 3 OA1 0 0 FA3 0 A2 0 0 0 4 2 0 2 D

: 1 0 0 0 7 0 0 0 A1 0 B3 5 2 8 8 5 0 1 8 6 0 1 0 2 3 0 A1 0 0 FA3 0 A2 0 0 CB

: 0 C0 0 8 0 0 0 0 4 2 0 A1 0 B3 E2 8 8 3 1 6 2 F 2 8 6 3 0 0 EB

: 0 2 4 0 0 E0 0 2 1 3 F 50

: 0 0 0 0 0 0 0 1 FF

; PIC 1 6 F 88



Các chươna trình nạp trinh đọc tệp cẩn nạp rồi gửi ra cổng song sons đến

mạch nạp trình. Các chương trình nạp chạy dưới môi trường DOS hoặc WINDOWS.



4.3.3.1 Chương trình nạp ICPROG.EXE

ICPROG là chưưn« trình chạy dưới mối trường DOS theo chế độ dòng lệnh

cùa Martin Clausen [21]. Chươne trình này tự động nhận dạng loại vi điều khiển

thông qua số nhận dạng ID cùa từng họ vi điều khiển PIC để xác định các thông số

như thời gian cần thiết để xoá/nạp trình và chế độ nạp trình tương ứng với từnẹ loại

vi diều khiển PIC. Cơ sở dữ liệu về các thông số nạp trình được lưu trong tệp dạng

văn bán, dễ dàng tham khảo hoặc thay đổi, nâng cấp cho phù hợp.

Ví dụ lệnh nạp trình cho PIC với tệp chương trình pulse.hex trong thư mục

c:\pice\tcst như sau:

C:\>PICPROG\ PICPROG.EXE /LPT1 /W:C:\PICC\TESTvPƯLSE



4.3.3.2 Chương trình nạp Ic-IYog

Chưưne trình nạp Ic-Prog phiên bản mới nhất Ic-Progl.05C của tác giả

Bonny Ginjen, chạy trên mỏi trường Windows [19]. IC-Prog hỗ trợ rất nhiều bộ nạp

trình khác nhau và nhiều loại vi điều khiển của nhiều hãng khác nhau như 12Xxxx,

lốXxxx của Microchip PIC, 89Cxx và AVR của ATMEL, TMS của Texas, các bộ

nhớ EEPROM theo chuẩn I2C hoặc Microwire...

Ưu điểm nổi bật của chương trình này là cho phép sửa mã chương trình và

nội dung bộ nhớ EEPROM trước khi nạp. Ch ươn 2 trình cũng cho phép đọc nội dung

bộ nhớchươne trình và bộ nhớ EEPROM của vi điều khiển đã nạp nếu vi điều khiển

dó khổng bị khoá mã. Ngoài ra còn cho phép nạp lại riêng từ cấu hình ị Config word)

mà khône cần phái thực hiện việc nạp toàn bộ nội dung chươne trình.



49



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

2 CHƯƠNG TRÌNH DỊCH NGÔN NGỮ BẬC CAO PCW-H

Tải bản đầy đủ ngay(100 tr)

×