LẬP TRÌNH PIC VÀ CÁC ỨNG DỤNG MẪU VỚI NGÔN NGỮ JAL

LẬP TRÌNH PIC VÀ CÁC ỨNG DỤNG MẪU VỚI NGÔN NGỮ JAL

Chuẩn bị bởi: Emre CEYHAN
Trong bài viết này, tôi sẽ cố gắng giải thích JAL và các lệnh của nó, một chương trình biên dịch sẽ cho phép chúng ta lập trình một bộ điều khiển vi mô rất đơn giản. Mikrocontroller sử dụng các trình biên dịch khác nhau trong lập trình. Tôi tin rằng trình biên dịch này là lý tưởng cho người mới bắt đầu vì nó là lý tưởng cho các ứng dụng đơn giản và được tự do phân phối trên internet.
Đối với trình biên dịch jal này bạn có thể tải xuống một chương trình biên tập đơn giản được viết bởi bạn bè của tôi ở đây thay thế link2
Với trình biên tập này, bạn có thể biên dịch chương trình và hình dạng được đưa ra trong mạch bằng mạch nếu bạn muốn cung cấp chip lập trình 16f84-16f877 của chúng tôi, chip có thể viết porgram tôi bạn biên dịch chương trình tương tự. Porgram sao chép tệp jaltemp.hex mà bạn đã tạo trong mỗi biên dịch vào c:. Nó sẽ đủ để tải tập tin hex này.
JAL (Chỉ một ngôn ngữ khác)
Jal, bởi Wouter van Ooijen 16F84, 16C84,16F877, đã phát triển chương trình để Scenix SX18 và SX28 vi điều khiển, chẳng hạn như một ngôn ngữ lập trình cấp cao.
Chúng tôi có thể cung cấp các tệp trình biên dịch và thư viện ngôn ngữ lập trình miễn phí từ internet, cho phép lập trình dễ dàng các bộ vi điều khiển với các lệnh máy tính đã biết. Chúng ta cũng có thể sử dụng nó trong các lệnh asembler khi lập trình.
Lập trình với Jal:
Đăng ký mô tả:
Với Jal, chúng ta có thể định nghĩa các thanh ghi có sẵn trong MicroController với bit hoặc tên byte mong muốn.
Ví dụ:
var byte received_data
Trong lệnh trên, chương trình gọi một trong các thanh ghi không sử dụng như receive_data.
var bit a = cao
Trong định nghĩa này, bit a được định nghĩa và logic 1 được gán làm giá trị bắt đầu. Nó có thể được sử dụng theo cách tương tự trong byte và có thể được gán giá trị ban đầu từ 0 đến 255.
var byte n = 1, m = 257
Nhiều hơn một bit hoặc byte có thể được sửa chữa cùng một lúc.
const byte constant_sync = 125
Bằng cách này, các bit hoặc byte cố định được sử dụng trong chương trình có thể được xác định.
Nhận dạng cổng:
I / O (đầu vào-đầu ra) có thể được xác định lên đến số chân trong cổng được sử dụng. Ví dụ, chúng ta có thể sử dụng 13 I / Os cho 16f84. Nếu không, trình biên dịch sẽ thất bại và ngừng biên dịch.
Ví dụ:
pin_a0_direction = input ... làm cho chân không của cổng A đầu vào
port_b_direction = all_output ...... Xuất ra toàn bộ cổng B
Hãy làm một ví dụ về những gì chúng tôi đã học được cho đến nay.
Ví dụ:
Hãy viết một chương trình ánh sáng đi bộ bằng cách sử dụng cổng B
*** chương trình ánh sáng đi bộ ****
bao gồm 16f84_4 - chứa các cài đặt biên dịch cần thiết cho chương trình mà vi điều khiển bạn đang viết
bao gồm jlib - chứa các tệp lib chứa các lệnh chúng tôi sử dụng
var bytes wait_sure - Tôi đã định nghĩa một thanh ghi byte có tên wait_sure
port_b_direction = all_output - Thoát hoàn toàn cổng b
wait_surface = 25 - Chúng ta có thể đặt thời gian để dịch chuyển ánh sáng bằng cách đặt giá trị từ 1 đến 255
- Tôi mua 25, bạn có thể thay đổi
port_b = 0b_0000_0001 - đèn đầu tiên bật sáng
delay_10ms (wait_message) - 250 ms chờ đợi (10 ms * 25 = 250 ms)
port_b = 0b_0000_0010 - đầu tiên ghi ra lần ghi thứ hai
delay_10ms (wait_sure) - đang đợi
port_b = 0b_0000_0100 - đèn thứ hai tắt đèn thứ ba ... ..
delay_10ms (bekleme_sure a)
port_b = 0b_0000_1000
delay_10ms (bekleme_sure a)
port_b = 0b_0001_0000
delay_10ms (bekleme_sure a)
port_b = 0b_0010_0000
delay_10ms (wait_sure)
port_b = 0b_0100_0000
delay_10ms (bekleme_sure a)
port_b = 0b_1000_0000
delay_1ms (bekleme_sure a)
Các điểm giá trị:
Các số được sử dụng trong quá trình lập trình có thể là các giá trị nhị phân, thập lục phân, thập phân hoặc ASCII.
Ví dụ:
Gidecek_data = 0b_0101_0101 - nhị phân
Gidecek_data = 0x_55 - thập lục phân
Gidecek_data = 85 - bây giờ là số thập phân
Gidecek_data = "a" - ASCII
Các toán tử được sử dụng:
điều hành
quyền ưu tiên
việc giải thích
đối số trái
đối số đúng
kết quả
!5ghi chú đơn điệuchútchút
!5ghi chú đơn điệubytebyte
+5cộng đơn điệubytebyte
-5đơn âm trừbytebyte
*4nhânbytebytebyte
/4phân côngbytebytebyte
%4modulobytebytebyte
+3thêmbytebytebyte
-3trừbytebytebyte
<<2di chuyển sang tráibytebytebyte
>>2chuyển sang phảibytebytebyte
>2lớn hơnbytebytechút
<2nhỏ hơnbytebytechút
> =2lớn hơn hoặc bằngbytebytechút
<=2nhỏ hơn hoặc bằngbytebytechút
==2bằngbytebytechút
! =2không bằng nhaubytebytechút
&1chútchútchút
&1bytebytebyte
|1HOẶCchútchútchút
|1HOẶCbytebytebyte
^1Xchútchútchút
^1Xbytebytebyte
bảng 2.1.1
Toán tử trên có thể được sử dụng khi lập trình.
Ví dụ:
Nếu in_data == 5 thì pin_a0 = kết thúc thấp nếu
***
counter = count + 1
Lệnh lặp:
Vòng lặp vô điều kiện:
Vòng lặp vô hạn:
Trong lập trình, nó được sử dụng khi một vòng lặp liên tục là cần thiết.
Ví dụ:
Chương trình vi điều khiển làm cho pin_a1 logic 1 hoặc 0 theo trạng thái của pin_a0, liên tục điều khiển pin_a0:
bao gồm 16f84_4
bao gồm jlib
pin_a0_direction = đầu vào
pin_a1_direction = đầu ra
pin_a1 = giá trị ban đầu thấp của pin a1
vòng lặp mãi mãi
nếu pin_a0 == cao thì
pin_a1 = cao
khác
pin_a1 = thấp
kết thúc nếu
단 루프
Chu trình điều kiện:
Trong khi:
Nó được sử dụng trong các chu kỳ mà chúng ta muốn cho đến khi một điều kiện được đáp ứng.
Ví dụ:
trong khi r> y loop
d = d + 1
r = r - y
단 루프
Đối với:
Nó được sử dụng khi chúng ta muốn lặp lại một giá trị.
Ví dụ:
cho 100 vòng lặp
a = a + 1
kết thúc cho
Lệnh điều kiện (nếu):
Nó được sử dụng để thực hiện các sự kiện sẽ xảy ra khi một số đối số được đưa ra trong chương trình.
Ví dụ:
nếu a> b thì
x = a
khác
x = b
kết thúc nếu
Quy trình và chức năng
Họ là những chương trình con thực hiện các hoạt động được thực hiện trong chương trình.
Nó được viết bằng các mẫu được đưa ra trong ví dụ. Mỗi thủ tục hoặc hàm phải được đặt tên bằng tên. Những tên này được sử dụng khi gọi thủ tục hoặc chức năng.
Ví dụ:
Ví dụ về định nghĩa Proceudre:
thủ tục zero (byte out x) bắt đầu
x = 0
thủ tục kết thúc
Ví dụ về định nghĩa hàm:
byte trả về hàm byte (x) là
byte y
cho 8 vòng lặp
asm rrf x, f
asm rlf y, f
단 루프
trả lại y
hàm kết thúc
Lệnh trả về:
Nó được sử dụng để trả lại chương trình chính trở lại từ các chương trình con.
Ví dụ:
byte trả về của hàm gốc (byte trong x) là var byte
n = 15
vòng lặp mãi mãi
nếu n * n <= x sau đó trả về n kết thúc nếu n = 1 hàm kết thúc vòng lặp kết thúcbằng cách sử dụng lệnh Asembler:
Nó cho phép bạn sử dụng các lệnh lắp ráp jal bên cạnh các lệnh jal.
Ví dụ:
thủ tục first_set (byte trong x, byte ra n) là
khối lắp ráp - lắp ráp
vòng lặp cục bộ, đã hoàn tất
clrf n
vòng lặp: btfsc x, 0
goto done
incfsz n, f
rrf x goto loop
thực hiện:
-bộ kết thúc cuối
thủ tục kết thúc
Hướng dẫn xử lý số học và logic:
Hoạt động hợp lý:
Chúng ta có thể sử dụng các phép toán logic được thể hiện trong Bảng 2.1.2 dưới đây trong jal. Nếu bit được xác định trong tập dữ liệu, nó có thể dễ dàng bị tác động đến và, hoặc và xor.
điều hành
quyền ưu tiên
các Giải thích
đối số trái
đối số đúng
kết quả
<<2di chuyển sang tráibytebytebyte
>>2chuyển sang phảibytebytebyte
&1chútchútchút
&1bytebytebyte
|1HOẶCchútchútchút
|1HOẶCbytebytebyte
^1Xchútchútchút
^1Xbytebytebyte
bảng 2.1.2
Ví dụ:
d = d | 1 - d xử lý dữ liệu với 1 hoặc logic
nếu d = 0b_0000_1100 thì kết thúc của quá trình sẽ trở thành d = 0b_0000_1101.
d << d dịch dữ liệu d sang trái. Ví dụ d = 0b_0001_0001 sẽ là d = 0b_0010_0010 ở cuối quá trình. Các phép toán số học:
Các phép tính số học được trình bày trong Bảng 2.1.3 có thể được sử dụng với Jal. Ngoài ra, phép nhân 24 byte, phép cộng, phép trừ và phép chia có thể được thực hiện với jal, nhờ khối khối toán học không được chỉ định trong tablature và được thêm vào JAL sau đó. Từ các hoạt động này, chỉ hoạt động phân chia không hoạt động đúng. Nếu muốn, người dùng có thể thực hiện các thao tác mà anh / cô ấy muốn thực hiện bằng cách nhập vào thư viện của anh ấy / cô ấy. Không thể thực hiện thao tác dấu chấm động trong chuỗi 16FXXX. Vì vậy, kết quả là chính xác.
Một số điều chúng ta cần biết khi thực hiện thêm và loại bỏ các thao tác với Byte là:
1- Tổng kết quả là 256 bit vì bộ xử lý có 8 bit. ví dụ
Nếu d = 255
d = 0 ở cuối quá trình d = d + 1.
Nếu kết quả tổng hợp của chúng tôi vượt quá 255, chúng tôi cần tạo thuật toán mới hoặc sử dụng thư viện toán học.
2- Phép trừ phải được sử dụng cho các số chưa ký.
3- Nếu phép trừ nhỏ hơn số được trừ, kết quả được trừ từ 0 và dương. Chúng tôi không biết điều này là quan trọng về tính chính xác của hoạt động. Ví dụ, nếu d = 0b_0000_0000, kết quả của d = d - 1 là d = 0b_1111_1111. Nếu chúng ta trừ kết quả từ 0, d = 1. Vì vậy, chúng tôi nhận được giá trị tuyệt đối của kết quả.
điều hành
quyền ưu tiên
việc giải thích
đối số trái
đối số đúng
kết quả
*4nhânbytebytebyte
/4phân côngbytebytebyte
+3thêmbytebytebyte
-3trừbytebytebyte
bảng 2.1.3
Tệp thư viện:
Cùng với trình biên dịch Jal đến các tập tin thư viện được đề cập dưới đây. Các tệp này được lưu trữ trong tệp lib . Trong phần tiếp theo, tôi đang nghĩ đến việc đưa ra một tập tin lib. Chúng ta có thể thêm các lệnh mới vào JAL.
1- Jlib (jpic, jascii, jdelay, jseven)
2- Khoảng thời gian
3- Hd447804, Hd447808
4- I2c
5- Lm75
6- Nối tiếp
7- Random3
---------------
Thư viện 1-Jlip:
Thư viện này chứa các tệp jpic, jascii, jdelay, jseven. Nhiệm vụ của các tệp này là:
a- jpic:
Nó là tập tin mà thông tin về pic được sử dụng được tìm thấy. Các lệnh liên quan đến cổng, bộ nhớ và thanh ghi được lưu trong tệp này.
b- jascii:
Đây là tệp cho phép chúng tôi sử dụng ký tự ascii làm giá trị khi lập trình.
c- Jdelay:
Chứa các lệnh được sử dụng để cung cấp thời gian trễ.
Chúng bao gồm:
delay_1us (byte trong x = 1)
delay_2us (byte trong x = 1)
delay_5us (byte trong x = 1)
delay_10us (byte trong x = 1)
delay_20us (byte trong x = 1)
delay_50us (byte trong x = 1)
delay_100us (byte trong x = 1)
delay_200us (byte trong x = 1)
delay_500us (byte trong x = 1)
delay_1ms (byte trong x = 1)
delay_2ms (byte trong x = 1)
delay_5ms (byte trong x = 1)
delay_10ms (byte trong x = 1)
delay_20ms (byte trong x = 1)
delay_50ms (byte trong x = 1)
delay_100ms (byte trong x = 1)
delay_200ms (byte trong x = 1)
delay_500ms (byte trong x = 1)
delay_1s (byte trong x = 1)
delay_2s (byte trong x = 1)
các lệnh delay_5s (byte in x = 1).
d- Jseven:
Bảy phân đoạn chứa các lệnh cho phép chúng tôi sử dụng màn hình.
2- Khoảng thời gian:
Chứa các lệnh cung cấp thời gian trễ bằng cách sử dụng ngắt hẹn giờ.
3- Hd447804, Hd447808:
Bao gồm các lệnh để nhập trên màn hình LCD loại HD447804 và Hd447808.
4-I2c:
Nó chứa các lệnh để nhận và gửi dữ liệu định dạng I2c.
5-LM75
Nó chứa các lệnh cần thiết để có được giá trị nhiệt độ trong tích hợp Lm75.
6-Nối tiếp
Nó chứa các lệnh để nhận và gửi dữ liệu định dạng Rs232.
7-Random3
chứa các lệnh cần thiết để tạo một số ngẫu nhiên.
Bạn nên mở tệp zip để tải xuống trong thư mục c: \ jal . Lưu ý rằng sau khi mở tất cả các tệp và thư mục trong thư mục jal không phải là chỉ đọc. Trong tập tin read.txt bạn sẽ tìm thấy một số thông tin bị thương. iltelis_edit là sau khi biên tập JAL để chạy nó bên trong thư mục ví dụ và 877_uygul ai đó mà bạn có thể mở tập tin trong một thư mục ... Jala Alt + J biên dịch với Alt + P Bạn có thể lập trình PIC của bạn với. Chỉ trình biên dịch jal là một chương trình dựa trên DOS có thể gây ra các sự cố trong các hệ điều hành windows 2000 và nt. 95, 98 và ME không có vấn đề gì ...
Thực hành Jal

Mạch này được thiết kế để sử dụng làm đồng hồ. Với mạch này, chúng ta có thể đặt đồng hồ cho giá trị chúng ta muốn.
Mạch này được thiết kế để sử dụng với làn đường 0-999999 đếm với màn hình LCD. Thực hiện đếm tiếp. Phạm vi đếm đủ rộng. Nó có thể được sử dụng từ 0 đến 999999, có nghĩa là, ở những nơi cần đến 1 triệu
Ví dụ về mã JAL PIC16F84 và PIC16F877
Flasor, pwm, adc, IR, bàn phím, eeprom, hẹn giờ, servo, điều khiển bước, phân phối
Tải xuống tệp LINK danh sách (ở định dạng TXT) link-1197.zip mật khẩu-pass: 320volt.com

Post a Comment

[disqus] [facebook] [blogger]

MKRdezign

Biểu mẫu liên hệ

Name

Email *

Message *

Powered by Blogger.
Javascript DisablePlease Enable Javascript To See All Widget
Hỗ trợ trực tuyến