- •ВВЕДЕНИЕ
- •1.1 Что такое микроконтроллер и как он работает
- •1.4 Организация памяти данных и программ
- •1.6 Организация циклов
- •1.7 Ввод-вывод дискретных данных. Обработка нажатия кнопки
- •2 ПРАКТИКУМ
- •Список литературы
- •ПРИЛОЖЕНИЕ А
- •ПРИЛОЖЕНИЕ Б
- •ПРИЛОЖЕНИЕ В
- •ПРИЛОЖЕНИЕ Г
- •ПРИЛОЖЕНИЕ Д
- •ПРИЛОЖЕНИЕ Е
ПРИЛОЖЕНИЕ Б (справочное)
СИСТЕМЫ СЧИСЛЕНИЯ
Так как естественным «алфавитом» микроконтроллера являются двоичные числа, то при их программировании используют запись чисел в двоичной и шестнадцатеричной системах счисления. Связь между двоичной и шестнадцатеричной системами счисления будет показана ниже по тексту. Чтобы избежать путаницы будем использовать обозначения чисел в различных системах счисления, принятые в Ассемблер Microchip:
–двоичные – b’0101011’ (двоичное число заключено в апострофы);
–шестнадцатеричные – 0х1A или 1Ah (число 1A).
Если число записано без дополнительных обозначений – оно по умолчанию считается десятичным.
Вспомним правила позиционной записи чисел на примере десятичных. Число 209
можно представить в виде 2·102+0·101+9·100. Нетрудно заметить, что цифры умножаются на основание системы счисления 10, возведенное в степень, соответствующую позиции (или разряда): единицы – нулевая степень, десятки – первая степень, сотни – вторая степень и т. д. Аналогично, в двоичной системе счисления, когда доступно только две
цифры, запись b’0101011’ можно представить в виде 0·27+0·26+1·25+0·24+1·23+0·22
+1·21+1·20 = 43.
В шестнадцатеричной системе счисления основанием является число 16, числа записываются следующими цифрами (значками для записи чисел): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (таблица Б.1). Число 0x2C для перевода в десятичное можно
представить в виде 2·161+12·160 = 44.
Удобство шестнадцатеричной системы счисления заключается в простоте перевода чисел из нее в двоичную систему счисления и обратно. Если разделить байт (8 бит) на два полубайта по четыре бита (на старший и младший полубайты), то можно заметить, что каждый полубайт представляет собой число от 0 до 15 и, соответственно, может быть записан в виде шестнадцатеричной цифры. Другими словами, байт может быть записан двухзначным шестнадцатеричным числом, поэтому для перевода двоичного числа достаточно перевести отдельно старший и младший полубайты в шестнадцатеричные цифры (рисунок Б.1).
49
Таблица Б.1 – Примеры записи чисел в различных системах счисления
Десятичное |
Двоичное |
Шестнадцатеричное |
|
|
|
0 |
0 |
0 |
|
|
|
1 |
1 |
1 |
|
|
|
2 |
10 |
2 |
|
|
|
3 |
11 |
3 |
|
|
|
4 |
100 |
4 |
|
|
|
5 |
101 |
5 |
|
|
|
6 |
110 |
6 |
|
|
|
7 |
111 |
7 |
|
|
|
8 |
1000 |
8 |
|
|
|
9 |
1001 |
9 |
|
|
|
10 |
1010 |
A |
|
|
|
11 |
1011 |
B |
|
|
|
12 |
1100 |
C |
|
|
|
13 |
1101 |
D |
|
|
|
14 |
1110 |
E |
|
|
|
15 |
1111 |
F |
|
|
|
16 |
10000 |
10 |
|
|
|
… |
… |
… |
|
|
|
255 |
11111111 |
FF |
|
|
|
50
1110 0011 |
|
0хA7 |
|
1110=0хЕ |
0011=0х3 |
0хА=1010 |
0х7=0111 |
|
0хE3 |
|
1010 0111 |
Перевод двоичного числа |
Перевод шестнадцатеричного |
||
в шестнадцатеричное |
числа в двоичное |
Рисунок Б.1 – Перевод чисел
51
ПРИЛОЖЕНИЕ В (справочное)
КАРТА ПАМЯТИ ДАННЫХ МИКРОКОНТРОЛЛЕРА PIC16F877A [2]
Символьное имя |
Адрес |
Символьное имя |
Адрес |
Символьное имя |
Адрес |
Символьное имя |
Адрес |
|
|
|
|
|
|
|
|
INDF |
00h |
INDF |
80h |
INDF |
100h |
INDF |
180h |
|
|
|
|
|
|
|
|
TMR0 |
01h |
OPTION_REG |
81h |
TMR0 |
101h |
OPTION_REG |
181h |
|
|
|
|
|
|
|
|
PCL |
02h |
PCL |
82h |
PCL |
102h |
PCL |
182h |
|
|
|
|
|
|
|
|
STATUS |
03h |
STATUS |
83h |
STATUS |
103h |
STATUS |
183h |
|
|
|
|
|
|
|
|
FSR |
04h |
FSR |
84h |
FSR |
104h |
FSR |
184h |
|
|
|
|
|
|
|
|
PORTA |
05h |
TRISA |
85h |
|
105h |
|
185h |
PORTB |
06h |
TRISB |
86h |
PORTB |
106h |
TRISB |
186h |
|
|
|
|
|
|
|
|
PORTC |
07h |
TRISC |
87h |
|
107h |
|
187h |
PORTD(1) |
08h |
TRISD(1) |
88h |
|
108h |
|
188h |
PORTE(1) |
09h |
TRISE(1) |
89h |
|
109h |
|
189h |
PCLATH |
0Ah |
PCLATH |
8Ah |
PCLATH |
10Ah |
PCLATH |
18Ah |
|
|
|
|
|
|
|
|
INTCON |
0Bh |
INTCON |
8Bh |
INTCON |
10Bh |
INTCON |
18Bh |
|
|
|
|
|
|
|
|
PIR1 |
0Ch |
PIE1 |
8Ch |
EEDATA |
10Ch |
EECON1 |
18Ch |
|
|
|
|
|
|
|
|
PIR2 |
0Dh |
PIE2 |
8Dh |
EEADR |
10Dh |
EECON2 |
18Dh |
|
|
|
|
|
|
|
|
TMR1L |
0Eh |
PCON |
8Eh |
EEDATH |
10Eh |
Резерв(2) |
18Eh |
TMR1H |
0Fh |
|
8Fh |
EEADRH |
10Fh |
Резерв(2) |
18Fh |
T1CON |
10h |
|
90h |
|
110h |
|
190h |
TMR2 |
11h |
SSPCON2 |
91h |
|
111h |
|
191h |
|
|
|
|
|
|
|
|
T2CON |
12h |
PR2 |
92h |
|
112h |
|
192h |
|
|
|
|
|
|
|
|
SSPBUF |
13h |
SSPADD |
93h |
|
113h |
|
193h |
|
|
|
|
|
|
|
|
SSPCON |
14h |
SSPSTAT |
94h |
|
114h |
|
194h |
|
|
|
|
|
|
|
|
CCPR1L |
15h |
|
95h |
Регистры |
115h |
|
195h |
CCPR1H |
16h |
|
96h |
116h |
|
196h |
|
|
общего |
|
|||||
CCP1CON |
17h |
|
97h |
назначения |
117h |
|
197h |
|
|
|
|||||
RCSTA |
18h |
TXSTA |
98h |
16 байт |
118h |
|
198h |
|
|
|
|
|
|
|
|
TXREG |
19h |
SPBRG |
99h |
|
119h |
|
199h |
|
|
|
|
|
|
|
|
RCREG |
1Ah |
|
9Ah |
|
11Ah |
|
19Ah |
CCPR2L |
1Bh |
|
9Bh |
|
11Bh |
|
19Bh |
CCPR2H |
1Ch |
|
9Ch |
|
11Ch |
|
19Ch |
CCP2CON |
1Dh |
|
9Dh |
|
11Dh |
|
19Dh |
|
|
|
|
|
|
|
|
52
Окончание приложения В
Символьное имя |
Адрес |
|
Символьное имя |
Адрес |
|
Символьное имя |
Адрес |
|
Символьное имя |
Адрес |
|
|
|
|
|
|
|
|
|
|
|
ADRESH |
1Eh |
|
ADRESL |
9Eh |
|
|
11Eh |
|
|
19Eh |
|
|
|
|
|
|
|
|
|
|
|
ADCON0 |
1Fh |
|
ADCON1 |
9Fh |
|
|
11Fh |
|
|
19Fh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистры |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20h |
|
общего |
A0h |
|
Регистры |
120h |
|
Регистры |
1A0h |
Регистры |
|
назначения |
|
|
общего |
|
|
общего |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
назначения |
|
|
назначения |
|
|
общего |
|
|
80 байт |
|
|
|
|
1EFh |
||
|
|
|
|
|
|
|
|
|||
назначения |
|
|
EFh |
|
80 байт |
16Fh |
|
80 байт |
||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
||||
96 байт |
|
|
|
|
|
|
|
|
|
|
|
|
Доступ к |
F0h |
|
Доступ к |
170h |
|
Доступ к |
170h |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|||
|
7Fh |
|
70h-7Fh |
FFh |
|
70h-7Fh |
17Fh |
|
70h-7Fh |
17Fh |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
Банк 0 |
|
|
Банк 1 |
|
|
Банк 2 |
|
|
Банк 3 |
|
|
|
|
|
|
|
|
|
|
|
|
53