АЛМАТЫ ЭНЕРГЕТИКА ЖӘНЕ БАЙЛАНЫС ИНСТИТУТЫ
ИНЖЕНЕРЛІК КИБЕРНЕТИКА КАФЕДРАСЫ
АВТОМАТИКА ҚҰРЫЛҒЫЛАРЫ МЕН ЭЛЕМЕНТТЕРІ
МИКРОПРОЦЕССОРЛЫҚ КОМПЛЕКТ
050702-«Автоматтандыру және басқару» мамандығы бойынша
оқитын студенттенттер үшін зертханалық жұмыстарды
орындауға арналған әдістемелік нұсқаулар
Алматы 2007
ҚҰРАСТЫРУШЫЛАР: Көпесбаева А.Ә., Тарасов В.М., Ибрашева Ә.Т. Автоматика құрылғылары мен элементтері. Микропроцессорлық комплект. 050702-«Автоматтандыру және басқару» мамандығы бойынша оқитын студенттенттер үшін зертханалық жұмыстарды орындауға арналған әдістемелік нұсқаулар.- Алматы: АЭжБИ, 2007. -33б.
Әдістемелік нұсқауда микропроцессорлық басқару жүйелерін программалауға арналған зертханалық жұмыстар бар.
Без. 9, кесте. 21, әдеб.көрсеткіші. -2 атау.
Пікір беруші: техн. ғыл. канд., доц. Шевяков Ю.В.
“Алматы энергетика және байланыс институтының” коммерциялық емес акционерлік қоғамының 2007 ж. жоспары бойынша басылады.
© “Алматы энергетика және байланыс институтының” КЕАҚ , 2007 ж.
Әдістемелік нұсқауға оқытушы микропроцессорлық комплект УМК-7-де орындалатын 4 зертханалық жұмыс кіреді.
1 Кесте - АҚЭ пәнінен УМК-7-де орындалатын зертханалық жұмыстар тізімі
Зертханалық жұмыстар нөмірі |
Атауы |
1 |
MPLAB ортасын зерттеу. Микропроцессор порттарын басқару |
2 |
Қосу, алу. Логика. Жылжыту операциялары |
3 |
Сандарды салыстыру. Маскілеу. Ауысуларды ұйымдастыру. Жанама адресацияны қолдану. |
4 |
Клавиатураны программалау. Ішкі программаларды жазу және олармен қатынасу |
Жұмысты жүргізгенге дейін студенттер оған дайындық жүргізу керек: аудиториядан тыс уақытында зертханалық жұмыс сипаттамасын оқып, берілген нұсқа бойынша тапсырма программасын жазу.
Зертханалық жұмыс бойынша есептеме программа мәтінінен және түсініктемесінен, өз нұсқасы бойынша толтырылған нәтижелер кестесінен тұруы керек.
Зертханалық жұмыс 1. MPLAB ортасын зерттеу. РІС микропроцессорының жады картасын, шығару/енгізу порттарын және кейбір командаларды меңгеру
Жұмыс мақсаты: MPLAB ортасын зерттеу, микропроцессор порттарын басқару техникасын меңгеру, регистрлерде бит орнату және өшіру командаларын, символдық аттарды қолдануды үйрену.
Қондырғы және программалық қамтама: Windows98, MPLAB ортасы, УМК-7 комплексі.
Аудиториядан тыс дайындық тапсырмалары:
- УМК-7 сипаттамасымен А Қосымшасы бойынша танысу;
- Б Қосымшасы бойынша status регистрінің RP0 және RP1 атты биттерімен танысу, олар арқылы банк нөмірін таңдауға болады;
- В қосымшасы арқылы PIC микропроцессорының жады картасымен танысу;
- Г Қосымшасы арқылы PIC микропроцессорының төменде келтірілген программадағы командаларымен танысу;
- PORTC және TRISC регистрлерімен және олардың банктерде орналасуын оқу. Регистрлер әртүрлі банктерде орналаса алатындығын есте сақтаңдар;
1.2 және 2 кестелердегі 1.1 және 1.2 тапсырмалары бойынша аудиториялық сабақтан тыс микропроцессорға енгізілетін прогаммалар мәтіндерін дайындап, Блокнот-та теріп әкеліңіздер. Ұқсас мысал ретінде төменде көрсетілген 1.1 және 1.2 программа үлгілерін пайдаланыңыздар. Программаны тергенде әріп регистрлерін үлгідегідей етіп теріңіз. Бірінші орыннан бастап белгілер, ал алтыншы орыннан бастап командалар жазылады.
2 Кесте - 1.1 тапсырма нұсқалары
Нұсқа |
Берілген мәндер |
Нұсқа |
Берілген мәндер |
1 |
00001111 |
6 |
10101010 |
2 |
11110000 |
7 |
01010101 |
3 |
00111100 |
8 |
00110011 |
4 |
11001100 |
9 |
11100010 |
5 |
01001101 |
10 |
00011101 |
Ескерту - Программа С портына қосылған жарық диодтарын осы сандарға сәйкес бірінен соң бірін жағуы керек. Программада символдық аттар қолданыңдар. |
3 Кесте - 1.2 тапсырма нұсқалары
Нұсқа |
С портын шығыс/ кіріске орнату |
С портына жіберілетін сан |
Нұсқа |
С портын шығыс/ кіріске орнату |
С портына жіберілетін сан |
1 |
00111100 |
00001111 |
6 |
11110000 |
10101010 |
2 |
01100111 |
11110000 |
7 |
11000011 |
01010101 |
3 |
00011110 |
00111100 |
8 |
11100001 |
00110011 |
4 |
00111011 |
11111111 |
9 |
11100111 |
00111111 |
5 |
00011101 |
10101010 |
10 |
01110011 |
11000111 |
Ескерту - С портын шығыс/кіріске орнату және оған берілген санды жүктеу прогаммасын жазыңыз. |
Программалар үлгісі
Программа 1.1. С портын басқару, символдық аттарды қолдану. Символдық аттар программа оқылуын жеңілдетеді. Сандарға немесе регистр адрестеріне символдық ат беруге болады. Ассемблер программаны компиляциялағанада символдық аттың орнына оған сәйкес мәндерді қойып оқиды.
Нүктелі үтірден кейін прогаммада түсініктемелер басылған.
include<p16F877.inc>
R0 EQU B'00000001' ; R0 - символдық ат, оның мәні 01h.
R1 EQU B'00000010' ; R1 - символдық ат, оның мәні 02h.
; программаның “орындау бөлімінің” басы.
org 0 ; осы сөзден кейін жүретін код электрлі ;программаланатын үзіліссіз сақтайын құрылғының (ЭППЗУ) нөлдік ;адресінен басталады.
nop ; жөндеушінің жұмысына қажетті бос команда.
nop
nop
org 05; осы сөзден кейін жүретін код (START белгісі) ;ЭППЗУ-дың 5-нші адресінен басталады.
START ; программа басын көрсететін белгі (метка)
CLRF STATUS ; status тазарады, яғни 0-нші банк таңдалады.
BSF STATUS, RP0 ; RP0 битіне 1 санын орнатып 1-нші банкті ;таңдау.
CLRF TRISC ; TRISC-ны тазарту арқылы PORTC-ны ;шығысқа орнату, яғни TRISC-ның барлық биттері 0-ге тең.
CLRF STATUS ; 0-нші банкті таңдау.
LOOP ; белгі.
CLRF PORTC ; PORTC регистрін тазарту.
MOVLW B’11000011’; W регистріне В’11000011’ екілік санын жазу.
MOVWF PORTC ; Санды W-дан в PORTC-ға жіберу арқылы «1» ;саны тұраған битке сәйкес жарықдиодтарын жағу.
MOVLW R0 ; R0 тұрақтысын аккумуляторға жүктеу, яғни ;W регистріне B’00000001’ санын жіберу.
MOVWF PORTC ; Санды W-дан в PORTC-ға жіберу арқылы ;жарықдиодтарын жағу.
MOVLW R1 ; W регистріне B’00000010’ санын жіберу.
MOVWF PORTC ; Жарықдиодтарын жағу.
GOTO LOOP ; LOOP белгісіне көшу.
END
Программа 1.2. Бұл программада PORTС регистрінің төрт кіші разрядтарын шығысқа, ал қалғандарын кіріске орнату орындалған.
include <p16F877.inc>
org 0x000 ; программаны орындау нөлдік адрестен басталады.
nop
nop
nop
org 05h ; 5-нші адрестен жалғастыру.
START ; программа басын көрсететін белгі.
CLRF STATUS ; 0-нші банкті таңдау.
BSF STATUS, RP0 ; RP0 битіне 1 санын орнатып 1-нші банкті ;таңдау.
MOVLW B’11110000’ ; порттың 4 кіші разрядын шығысқа, ал үлкен 4 ; разрядын кіріске орнату үшін қолданылатын сан
MOVWF TRISC ; TRISC-ға осы санды жіберу арқылы С ;портының 4 кіші разрядын шығысқа, үлкен 4 разрядын кіріске орнату;
CLRF STATUS ; 0-нші банкті таңдау.
LOOP ; белгі.
CLRF PORTС ; С портын тазарту.
MOVLW B’11111111’ ; W регистріне екілік санды жазу.
MOVWF PORTС ; С портына сегіз бірлік жазу.
MOVLW B’00111100’ ; W регистріне екілік санды жазу.
MOVWF PORTС ; оны С портына жазу.
GOTO LOOP ; LOOP белгісіне оралу.
END
Осы программа нәтижесінде қай сәйкес диодтар жанады, қайсысы жанбайтынын көріңіздер.
УМК-7-де орындайтын зертханалық жұмыс тапсырмалары
Тапсырма 1. MPLAB-ты тышқанның көмегімен жұмыс столында тұрған белгісіне екі рет шерту арқылы жұмысқа қосыңыз. File-New командалары арқылы жаңа файл ашып 1.1 тапсырма бойынша үйде дайындалған бағдарламаны Блокнот-тан көшіріңіз.
Мысалы, программаны tut877.asm атымен program бумасында сақтаңыз. Программа жұмыс істеу үшін оны компиляциялау керек, ол үшін:
- ашылып тұрған жоба бар болса оны MPLAB-тың негізгі менюіндегі Project – Close Project командасының көмегімен жабу керек;
- Project – New Project командасының көмегімен жаңа жоба құрылады;
- жаңа жоба орналасатын буманың атын көрсетіп, File Name өрісіне жоба атын енгізу қажет (1.1 Суретіне қараңыз), содан кейін OK батырмасын басыңыз.
1.2 Суретте көрсетілген Edit Project атты жоба терезесі ашылады.
Development Mode жолына көңіл аударыңыз. Ол MPLAB-SIM симуляторымен және PIC12C508 процессорымен жұмыс істеп отырғанымызды көрсетеді. Дисплейда MPLAB-IDE – де соңғы қолданылған Development Mode және процессор көрсетіліп тұрады. Егер оны өзгерту қажет болса Change батырмасын басасыз. Басқанда 1.3 Суретте көрсетілген Development Mode терезесі ашылады. MPLAB-ICD Debugger жолын таңдап, Apply және OK батырмаларын басқанда сіз қайтадан Edit Project терезесіне ораласыз.
Edit Project диалогтық терезесіндегі Project Files облысындағы tut877 [.hex] жолын ерекшелеңіз де Add Node батырмасын басыңыз. Add Node диалогтық терезесінен tut877.asm файлын таңдаңыз, яғни осы арқылы жобаңызды алдында құрылған ассемблер файлмен байланысады. ОК басып қайтадан Edit Project терезесіне ораласыз.
Әрқашан ассемблер MPASM алғашқы .asm-файлды компиляцияланғанда сол атпен кеңейтілуі .hex болатын файл құрады. Жоба басқарушысы (Project Manager) жоба қалыптасуы кезінде (Built Project) tut877.hex файл құрады.
Дайын жобаны Project - Save Project командасымен сақтау қажет. Енді MPASM-ды қолданып қосымшаларды компиляциялау үшін Project - Make Project командасын қолданыңдар. Build Results терезесі ассемблерге жіберілген командалық жолды көрсетеді. Егер соңғы жолда 1.4 Суретте көрсетілгендей “Build completed successfully” сөйлемі тұрса, онда компиляция сәтті өтті. Басқа жағдайда Build Results терезесіндегі катесі көрсетілген жолға екі рет шертсеңіз ассемблер мәтініндегі сәйкес қате жолға ораласыз. Программа мәтінін түзеп, компиляциялау үшін Project - Save Project және Project - Make Project командаларын орындаңыз. Өстіп барлық қателерді жойыңыз.
Барлық қателерді жойып кристалды программалаңыз, ол үшін MPLAB-ICD терезесіндегі Program батырмасын басыңыз (1.5 Сурет). Егер бұл терезе болмаса Development Mode көрсеткіштерін жөндеңіз – Optiоns - Development Mode – MPLAB ICD Debugger. Программалау жарты минуттай уақытты алады, бұл уақыт аралығында Status өрісі орындалу процесін көрсетеді. Программалау біткеннен кейін Status өрісінде “Waiting for user command” хабарламасы көрсетіледі - “Қолданушы командасын тосу”.
Программаны Debug – Run – STEP командаларымен қадамдық режімде орындаңыз. Командалар орындалуының нәтижесін жарықдиодттарға қарап бақылаңыз.
Егер программа орындалуы бір жолда тұрып қалып ары қарай орындалмаса Debug – Clear all points командасын орындаңыз.
Программа орындалуын Run - Reset командаларымен тоқтатыңыз (Halt – командасы программа орындалуын тоқтатады, бірақ Debug – Run- Step командасын басқанда программа орындалуы тоқтаған жерден басталады).
Программаны Debug – Run – Run режімінде жіберіп, оның орындалуын байқаңыз. Жарықдиодттардың бәрі неге біруақытта жанып тұрғанын түсіндіріңіз.
Үйде дайындалған программаларды зертханалық жұмыс есептемесіне енгізер алдында өзгерту қажеттілігі болса өзгертіңіз. Программа мәтінін Блокнот-қа көшіруге болады.
Тапсырма 2. 1.2 тапсырма бойынша дайын Блокнот-тағы программаңызды жаңа файл ашып соған көшіріңіз - С портын шығыс/кіріске реттеу және оған берілген санды жіберу.
Осы программаны сақтап, осы сақталған атпен алдында істелген жаңа жоба құру әрекеттерін қайталап жаңа жоба құрыңыз.
Ескерту! Келесі зертханалық жұмыстарда тек программа мәтінін ғана өзгертіңіз, ал файл және жоба аттарын өзгертпеңіз.
Кристаллды программалаңыз да программаны орындауға қадамдық режімде Debug – Run – Step командасымен жіберіңіз. Программа жұмысының нәтижесін 3.1 кестеге жазыңыз.
3.1 Кесте - Нәтижелер кестесі
С портын шығыс/кіріске реттеу саны |
С портына жіберілетін сан |
С портынан шығатын сан |
|
|
|
Тапсырма 3. PORTC және W регистрлерінің күйін бақылаңыз, ол үшін Window – Watch Window – New Watch Window командаларымен бақылау терезесін құрыңыз. Енгізу өрісіне “P” символын енгізіп астында ұсынылған тізімнен PORTC жолын таңдаңыз. Properties батырмасын басып сандарды шығарудың екілік форматын тадаңыз. Осы әрекеттердің нәтижесінде Watch1 атты жаңа бақылау терезесі пайда болады. Ары қарай Add батырмасын басыңыз. Енді енгізу жолына ‘W’ символын енгізіп, Add және CLOSE батырмасын басыңыз. Екінші рет Properties-ті басу қажет емес. 1.2 тапсырмасының программасын қадамдық режимде қайтадан орындай отырып PORTC және W регистрлерінің күйінің өзгеруін Watch1 терезесінен бақылаңыз.
Ескерту! Ары қарай қалған зертханалық жұмыстарда қолданылған барлық регистрлер үшін де бақылау терезесін құрыңыздар.
Бақылау сұрақтары
1 MPLAB программалық қамтамасының құрамын атап өтіңіздер.
2 CLRF командасы нені орындайды?
3 MOVLW, MOVWF, MOVF командалары нені орындайды?
4 Жобада не үшін және қалай бақылау терезін құру қажет?
5 Осы стенд панелінде қандай сыртқы құрылғылар орнатылған?
6 С портының разрядтары қалай шығысқа немесе кіріске реттеледі?
7 BSF және BCF командаларының қызметі.
2 Зертханалық жұмыс 2. Қосу, алу. Логика. Жылжыту операциялары
Жұмыс мақсаты: ADDWF, ANDWF, IORWF, XORWF, SUBWF, BCF, BSF, COMF, SWAPF, RRF, RLF командаларының орындалуын зерттеу.
Қондырғы және программалық қамтама: Windows98, MPLAB ортасы, УМК-7 комплексі.
Аудиториядан тыс дайындық тапсырмалары:
Тапсырма 1. ADDWF, SUBWF, ANDWF, IORWF, XORWF командаларының жұмыс режимін және форматын зерттеңіз. FAh және 02h екі тұрақты сандарды қолданып әртүрлі командалардың нәтижелерін С портына шығаратын 2.1 программаны талдаңыз. 4 кестедегі 2.1 тапсырмаға берілген сандарды қолданып жоғарыда көрсетілген командаларды орындайтын программаны дайындаңыз.
4 Кесте - 2.1 тапсырма нұсқалары
нұсқа |
R1 саны жазылатын сан |
R2 саны жазылатын сан |
нұсқа |
R1 саны жазылатын сан |
R2 саны жазылатын сан |
1 |
00000001 |
00010000 |
6 |
00000110 |
01100000 |
2 |
00000010 |
00100000 |
7 |
00000111 |
01110000 |
3 |
00000011 |
00110000 |
8 |
00001000 |
10000000 |
4 |
00000100 |
01000000 |
9 |
00001001 |
10010000 |
5 |
00000101 |
01010000 |
10 |
00001010 |
10100000 |
Тапсырма 2. BCF, BSF, COMF, SWAPF, RRF, RLF командаларының орындалу ережелерін зерттеңіз. 2.2 программа үзіндісін талдаңыз. Неге оңға жылжытар алдында Status регистрінің С битіне 0 жазылатынын қарастырыңыз.
Тапсырма 3. 5 кестедегі 2.2 тапсырма бойынша төменде көрсетілген әрекеттер орындайтын программа дайындаңыз:
а) берілген санның разрядтарына жазылған ‘0’-де жарықдиодтары жанып, ал ‘1’-де жанбайтындай етіп инверсия қолданатын программа жолдарын жазыңыз;
б) алғашқы сан кез-келген болғанменен де келесіні орындайтын программа жолдарын жазыңыз:
1) ВCF командасын қолданып берілген жарықдиодын өшіру;
2) BSF командасын қолданып берілген жарықдиодын жағу;
в) жартыбайттардың орнын ауыстыратын программа жолдарын жазыңыз;
г) берілген сандарды жылжыту операциясының көмегімен өзгертетін программа жолдарын жазыңыз (жылжытуды үш рет жасаңыз).
Программаны қадамдық режимде орындаңыздар.
Ескерту! Әріптен басталатын оналтылық сан алдында, мысалы FAh, программа мәтінінде нөл саны жазылады. Бұл санды әрқашан да әріптерден басталатын символдық аттан немесе командалардан ажырату үшін жасалады.
5 Кесте - 2.2 тапсырма нұсқалары
Нұсқа |
Енгізілетінсанының берілген мәні |
Өшіріле тін бит |
Жағатын бит |
Нұсқа |
Енгізілетінсанының берілген мәні |
Өшіріле тін бит |
Жағатын бит |
1 |
12 |
1 |
0 |
6 |
67 |
2 |
3 |
2 |
23 |
1 |
2 |
7 |
78 |
3 |
0 |
3 |
34 |
2 |
3 |
8 |
89 |
3 |
1 |
4 |
45 |
1 |
2 |
9 |
9А |
1 |
2 |
5 |
56 |
2 |
3 |
10 |
АВ |
3 |
2 |
include <p16F877.inc>
R1 EQU h’20’ ; R1 – мәні 20h (20h регистр адресінің атын R1 деп атадық).
R2 EQU h’24’ ; R2 – мәні 24h (24h регистр адресінің атын R2 деп атадық).
org 0x000
nop
nop
nop
org 05h
START ;Программа басын көрсететін белгі.
CLRF STATUS ;Регистрді тазартып, 0-нші банкті таңдау.
BSF STATUS, RP0 ;1-нші банкті таңдау.
CLRF TRISC ;C портының барлық биттерін шығысқа орнату.
CLRF STATUS ;0-нші банкті таңдау.
CLRF PORTC ;C портын тазарту (жарықдиодтарын өшіру).
; R2>R1 регистрлеріне мәліметтерді енгізу.
MOVLW 0FAh ;FAh тұрақтысын W-ға жазу.
MOVWF R2 ;FAh тұрақтысын R2 регистріне жіберу.
MOVLW 02h ;02h тұрақтысын W-ға жазу.
MOVWF R1 ;02h тұрақтысын R1 регистріне жіберу.
SUBWF R2,0 ;R2 - R1(W) айырмасы. Нәтижесі W-ға ;жазылады.
MOVWF PORTC ;W -ың мәнін PORTС регистріне жіберу.
MOVF R2,0 ;FAh тұрақтысын R2-ден W-ға жазу.
ADDWF R1,0 ;R1+R2(W) қосындысы. Нәтижесі W-ға ;жазылады.
MOVWF PORTC ;W -ың мәнін PORTС регистріне жіберу.
MOVF R2,0 ;FAh тұрақтысын R2-ден W-ға жазу.
ANDWF R1,0 ;R1 AND R2 логикалық көбейтіндісі, нәтижесі ;W-ға жазылады.
MOVWF PORTC ;W -ың мәнін PORTС регистріне жіберу.
GOTO $ ;программаның осы жолда циклдануы.
END
2.2-нші программа үзіндісінде инверсия, битті өшіру, жартыбайттардың орнын ауыстыру, оңға жылжыту операцияларының қолданылуы көрсетілген.
2.2-ші программаның үзіндісі
MOVLW B'11110000' ;W аккумуляторға тұрақтыны жазу.
MOVWF PORTC ;W-дан тұрақтыны С портына көшіру.
COMF PORTC,1 ;С портын кері айналдыру (инверсия).
;Нәтижесі С портында қалады
MOVWF PORTC ;W-дан тұрақтыны С портына көшіру.
BCF PORTC,7 ;С портының 7-нші битін өшіру.
MOVWF PORTC ;W-дан тұрақтыны С портына көшіру.
SWAPF PORTC,1 ;С портындағы жартыбайттарды алмастыру.
BCF STATUS,0 ;Status регистрінің С битіне нөл жазу.
MOVWF PORTC ;W-дан тұрақтыны С портына көшіру.
RRF PORTC,1 ;С портын оңға жылжыту. Нәтижесі С ;портында қалады.
Зертханалық жұмысты УМК-7-де орындауға тапсырма
Тапсырма 1. 2.1 тапсырма бойынша дайындалған программаны орындауға жіберіңіз. Барлық командалар жұмысының нәтижесін 6 Кестеге жазыңыз.
Кесте - ADDWF командасының жұмысының нәтижесін жазу мысалы
Кірістегі екілік сан |
Команда |
С портының шығысындағы сан |
||
R1 мәні |
R2 мәні |
b формасы |
h формасы |
|
11111010 |
00000010 |
ADDWF (R1+W) |
11111100 |
FС |
Ескерту! Санның қажетті форматында барлық регистрлер үшін бақылау терезесін құруды ұмытпаңыздар.
Тапсырма 2. 2.2 тапсырма бойынша үйде дайындалған программаны орындауға жіберіңіз. Барлық командалар жұмысының нәтижесін 7 Кестеге енгізіңіз.
7 Кесте - ВCF командасының жұмысының нәтижесін жазу мысалы
Кірістегі сан |
Команда |
С портының шығысындағы сан |
||
b формасы |
h формасы |
b формасы |
h формасы |
|
11110000 |
F0 |
BCF (7-нші бит) |
01110000 |
70 |
Бақылау сұрақтары
1 ADDWF, SUBWF командаларының қызметі неде?
2 ANDWF, IORWF командаларының қызметі неде?
3 Неге сандарды жазу үшін 20h-ншы адрестен бастап қолданылған?
4 Оңға (солға) жылжыту қалай жүреді? Status регистрінің қай биті жылжыту операциясы кезінде өзгереді?
5 Инверсия операциясы жайлы не білесіз?
6 «Жартыбайттарды алмастыру» операциясы туралы айтыңыз.
3 Зертханалық жұмыс 3. Сандарды салыстыру. Маскілеу. Ауысуларды ұйымдастыру. Жанама адресацияны қолдану
Жұмыс мақсаты: status регистрінің флагтарын сандарды салыстыруда қолдану. Маскілеу командаларын, мәліметтерді маскілеудің программалық әдістерін оқу. Жанама адресацияны қолдану.
Қондырғы және программалық қамтама: Windows98, MPLAB ортасы, УМК-7 комплексі.
Аудиториядан тыс дайындық тапсырмалары:
Тапсырма 1. Төменде көрсетілген программа үзінділері бойынша шартты өтуді ұйымдастыратын BTFSC және BTFSS операцияларын зерттеңіздер.
CARRY битін тексеру
BTFSS STATUS, C ; Егер С битінде 1 орнаған болса, онда келесі ;командадан (GOTO МЕТКА) өтіп кетіп Команда 1-ді орындау.
GOTO METKA
Команда 1
ZERO битін тексеру
BTFSS STATUS, Z ; Егер Z битінде 1 орнаған болса, онда келесі ;командадан (GOTO МЕТКА) өтіп кетіп Команда 2-ні орындау.
GOTO METKA
Команда 2
С битін тексеріп кіші санды жарықдиодтарына шығаратын 3.1 программа үзіндісін оқыңыз. Бұл үзіндіде азайтылатын сан AZAITU атымен берілген, ал R1 және R2 берілген сандарды сақтайтын регистрлер аттары.
3.1 программа үзіндісі.
MOVLW B’1-ші сан’ ; 1-нші сан à W
MOVWF R1 ; W à R1
MOVWF AZAITU ; W à AZAITU
MOVLW B’ 2-ші сан’ ; 2 -нші сан àW
MOVWF R2 ; W à R2
SUBWF AZAITU,1 ; AZAITU =AZAITU – W=
; = R1 – R2
BTFSS STATUS,C ; C = 1?
MOVF R1,0 ; R1 à W
MOVWF PORTC ; W à PORTC
Тапсырма 2. 8 кесте бойынша келесі әрекеттерді орындайтын 3.1 программаны жазыңыз, 9 кестедегі флагтар мәнін қолданыңыз:
- әртүрлі регистрлерде орналасқан сандарды салыстыру. Үлкен сан жарықдиодтарына шығарылады;
- бірдей сандарды салыстыру, R1 және R1.
Программа жазуда 3.1. суреттегі блок-сұлбаны қолданыңыз.
Ұсыныс. Программа жазуда берілген сандарды сақтайтын символдық аттарды қолданыңыз.
8 Кесте - 3.1 тапсырма нұсқалары
Нұсқа |
R1-ге жазатын сан |
R2 –ге жазатын сан |
Нұсқа |
R1 -ге жазатын сан |
R2 -ге жазатын сан |
1 |
00111100 |
00001111 |
6 |
11100001 |
00110011 |
2 |
01100111 |
11110000 |
7 |
11001111 |
00111011 |
3 |
00011110 |
00111100 |
8 |
10010110 |
01101010 |
4 |
11110000 |
10101010 |
9 |
01110110 |
00101011 |
5 |
11000011 |
01010101 |
10 |
01100001 |
00111011 |
9 Кесте - SUBWF AZAITU,d командасының флагтары (UMENSH - W)
Жұмыс регистрі мен жалпы міндет регистрінің (AZAITU) мәндерінің қатынасы |
Status регистрінің биттерінің мәндері |
||
Z |
DC |
C |
|
AZAITU >W |
0 |
1 |
1 |
AZAITU <W |
0 |
0 |
0 |
AZAITU =W |
1 |
1 |
1 |
Ескерту - AZAITU – бұл айырмасын алу кезінде азаятын мән |
Тапсырма 3. Төменде көрсетілген үзінділер мысалында жанама адресациямен программа ұйымдастыру әдістерін оқыңыз. FSR регистрінде тек ұяшықтің адресі сан ретінде сақталады, ал INDF болса FSR регистрінде сақталған адрестің мәні, сондықтан ол адреспен INDF арқылы жұмыс істейміз.
Микропроцессор командаларының құрамында шартты өту командалары жоқ екеніне назар аударыңыздар, сондықтан циклдық алгоритмдер шартты оператор мен шартсыз өту операторларының көмегімен құрылады.
3.2 программа үзіндісін оқыңыз. Ол 24һ..27һ адрестерінде орналасқан сандар массивін қосуға арналған.
3.2 программа үзіндіс1. Сандар массивінің қосындысы.
MOVLW REG24 ;символдық аты REG24 болып келген 24h
;жалпы міндет регистрінің (ЖМР) адресін W ;регистріне жазу
MOVWF FSR ; FSR регистріне ЖМР-ің адресін жазу.
CLRW ; қосу алдында W жұмыс регистрін тазарту.
NEXT
ADDWF INDF, 0 ;W жұмыс регистрі мен ЖМР регистрінің ;мәндерін қосу, нәтижесін W жұмыс ;регистрінде сақтайды
INCF FSR, 1 ; FSR регистріндегі адресті 1-ге өсіру,
; нәтижесі FSR-де қалады
BTFSS FSR, 3 ;Тексеру – бәрі орындалды ма? 28h адресіне ;жеттік пе?
GOTO NEXT ; егер жетпесек NEXT белгісіне көшеміз.
MOVWF PORTC ;егер иә, жетсек қосындысын жарықдиодтарына шығарамыз.
Ескерту - 28h адресіне жеткен кезде ‘1’ саны FSR регистрінің үшінші разрядында пайда болады, санның екілік форматында ’00101000 ’.
Оперативті жадыдағы ақпарат массивін өшіру программасы да осыған ұқсас жазылады.
Тапсырма 4. Келтірілген программаны қолданып 10 Кесте бойынша 3.2 тапсырманың 3.2 программасын құрыңыз. Көрсетілген регистрлердің қосындысын алыңдар.
10 Кесте - 3.2 тапсырма нұсқасы
Нұсқа |
Сан |
Маска |
Массив регистрлері нің адрестері |
Нұсқа |
Сан |
Маска |
Массив регистрлері нің адрестері |
1 |
10110011 |
11000001 |
20h - 23h |
6 |
00111001 |
11100110 |
44h - 47h |
2 |
10011111 |
00110010 |
24h - 27h |
7 |
11011100 |
01101100 |
50h - 53h |
3 |
10101001 |
01110011 |
30h - 33h |
8 |
10001110 |
01001111 |
54h - 57h |
4 |
01110111 |
01010100 |
24h - 37h |
9 |
00111001 |
00110001 |
60h - 63h |
5 |
01101101 |
10100101 |
40h - 43h |
10 |
01110101 |
10010111 |
64h - 67h |
Ескерту - Массивтің барлық регистрлеріне сандық мәліметтер ретінде нұсқа нөмірін жазыңдар. Массивтер үшін символдық аттар қолданыңдар. |
Тапсырма 5. Логикалық операциялар көмегімен маскілеудің ережелерімен танысыңыздар:
- берілген сан мен маска-санын логикалық көбейту (AND) кезінде маска-санының 0 тұрған жеріне сәйкес берілген санның разряды тазарады, ал 1 тұрған сәйкес жерінде өзгермейді. Бұл санның бірнеше разрядын тазарту үшін қолданылады;
- берілген сан мен маска-санын логикалық қосу (OR) кезінде маска-санының 1 тұрған жеріне сәйкес берілген санның разрядына 1 орнайды, ал 0 тұрған жерінде өзгермейді. Бұл санда бірнеше битті орнату үшін қолданылады;
- берілген сан мен маскі-санының арасында логикалық “НЕМЕСЕ-ні жоққа шығару” (ХOR) операциясын қолдану кезінде егер маска-саны мен берілген санның сәйкес разрядтары ұқсас болса нәтижесі 0 болады, ал сәйкес разрядтары қарама-қарсы болса 1 орнайды. Яғни бұл команда берілген сан мен маска-санынының разрядтарының арасындағы айырмашылыққа әсер етеді. Бұл команда регистрдің қандай да бір санға тең, тең емес екендігін тексеруде жиі қолданылады.
Маскілеу нәтижелерінің мысалдары 11 Кестеде келтірілген.
11 Кесте - 3.3, 3.4 және 3.5 үзінділеріндегі маска қолдану нәтижелері
Нысандар |
Операция |
||
OR (бит орнату) |
AND (бит тазарту) |
XOR (теңдікке тексеру) |
|
Сан |
10101010 |
10101010 |
10101010 |
Маска саны |
11110000 |
11110000 |
10101010 |
Нәтиже |
11111010 |
10100000 |
00000000 |
Тапсырма 6. 3.3, 3.4, 3.5 программа үзінділерін қарастырып логикалық операциялар көмегімен маскілеу тәсілдерін үйреніңіздер.
3.3 үзіндісі. Логикалық қосу көмегімен төрт битті орнату.
MOVLW B’10101010’ ;ААh тұрақтысын W регистріне қондыру.
MOVWF PORTC ;санды С портына жіберу.
MOVLW B’11110000’ ;маска-санын W регистріне орнату.
IORWF PORTC, 1 ;W регистріндегі маска саны бойынша С ;портында биттерді орнату.
3.4 үзіндісі. Логикалық көбейту көмегімен төрт битті тазарту.
MOVLW B’10101010’ ;ААh тұрақтысын W регистріне қондыру.
MOVWF PORTC ;санды С портына жіберу.
MOVLW B’11110000’ ;маска-санын W регистріне орнату.
ANDWF PORTC, 1 ;W регистріндегі маска-саны бойынша С ;портындағы биттерді тазарту .
3.5 үзіндісі. REG1 регистрін ААh cанына теңдікке тексеру
MOVLW 0ААh ; ААh тұрақтысын W регистріне қондыру.
MOVWF REG1 ; W-дан ААh тұрақтысын REG1-ге жазу.
XORWF REG1, 0 ;логикалық операцияны қолданамыз да ;нәтижесін W-ға жазамыз.
MOVWF PORTC ;нәтижесін С портынан жарықдиодттармен ;тексереміз.
Тапсырма 7. 9 Кестедегі нұсқа бойынша маскілейтін 3.3 программаны дайындаңыз.
УМК-7-де зертханалық жұмысты орындауға тапсырма
Тапсырма 1. 3.1-ші тапсырма бойынша үйде дайындалған программаны енгізіп жоба құрыңыз, орындауға жіберіңіз. Нәтижесін талдап жазыңыз.
Ескерту! Барлық регистрлер үшін бақылау терезесін құруды ұмытпаңыздар.
Тапсырма 2. Дайындалған 3.2 программаны микропроцессорға енгізіңіз. Нәтижесін 12 Кестеге жазыңыз.
Тапсырма 3. Дайындалған 3.3 программаны микропроцессорға енгізіңіз. Нәтижесін 11 Кестеге жазыңыз.
12 Кесте - Массивті қосу нәтижесін жазу мысалы
Нұсқа |
Массив регистрінің адресі |
Регистрдегі массив саны |
W регистріндегі қосынды |
11 |
70h |
0Bh |
0Bh |
|
71h |
0Bh |
16h |
|
72h |
0Bh |
21h |
Бақылау сұрақтары
1 Status регистрінің қандай разрядтары логикалық және математикалық операциялар кезінде мәндерін өзгертеді?
2 BTFSC шартты өту командасының жұмысын түсіндіріңіз.
3 BTFSS шартты өту командасының жұмысын түсіндіріңіз.
4 Нақты бір разрядтарды тазалау (орнату) үшін қандай логикалық операциялар қолдану қажет?
5 Сандар теңдігін анықтау үшін қандай логикалық операциялар қолдану қажет?
6 Адресациялаудың қандау әдістерін білесіздер?
7 Жанама адресация кезінде банк нөмірі қалай орнатылады?
4 Зертханалық жұмыс 4. Клавиатураны программалау. Ішкі программаларды жазу және олармен қатынасу
Жұмыс мақсаты: клавиатурадан енгізуді программалауды оқыту. Шартты өту және порттарды инициализациялауды ұйымдастыруда алған білімдерін нығайту. Ішкі программаларды жазу және олармен қатынасуға үйрету.
Қондырғы және программалық қамтама: Windows98, MPLAB ортасы, УМК-7 комплексі.
Аудиториядан тыс дайындық тапсырмалары:
Тапсырма 1. УМК-7-нің бет тақтасында көрсетілген (4.1 Сурет) клавиатураның қосылу сұлбасын оқыңыз. Бұл жерде қосқыштар ретінде клавиатура батырмалары көрсетілген. 4.2 суретте мысал ретінде “1” саны арқылы батырманың D портына қосылуы келтірілген. «1» батырмасының бір клеммасы RD7-ге, ал екінші клеммасы RD3-ке қосылған. RD7 биті шығысқа, ал RD3 биті кіріске программаланған деп алайық. RD7 шығысынан сигнал шығып «1» батырмасының басылуын тосып тұрады, батырма басылған жағдайда сигнал RD3 клеммасына барады. RD3 кірісінде сигнал пайда болған жағдайда С портының клеммаларына жалғанған бірнеше немесе бір жарықдиодын жағуға, басқа да әрекеттер жасауға болады. RC6 клемасына қосылған бір жарықдиодын жағайық.
Тапсырма 2. Сипатталған әрекеттерді орындайтын және RC6 клемасына қосылған жарықдиодының жағылуын көрсететін 4.1 программасын оқыңыздар.
4.1 үзіндісі. Клавиатураны программалау.
START
CLRF STATUS ; STATUS регистрін тазалау.
BSF STATUS, RP0 ; 1-нші банкті таңдау.
MOVLW B’00001111’ ; D портын инициализациялайтын сан.
MOVWF TRISD ;RD0-RD3 биттерін кіріске, қалған
;RD4-RD7 биттерін шығысқа орнату.
CLRF TRISC ; PORTC-ны шығысқа орнату.
CLRF STATUS ; 0-нші банкті таңдау.
CLRF PORTD ; PORTD регистрін тазарту.
CLRF PORTC ; PORTC регистрін тазарту.
MOVLW B’10000000’
MOVWF PORTD ; RD7 шығысында сигнал болуы үшін ‘1’ ;жазу.
BASU
BTFSS PORTD,3 ;RD3 кірісінде ‘1’ пайда болды ма жоқ па ;тексеру, яғни “1” клавишасы басылғанын ;тексеру.
GOTO BASU ;егер жоқ болса басылуын тексеруді ;қайталау
MOVLW B’01000000’ ;ал егер басылса, онда RC6 клемасына
MOVWF PORTC ;қосылған жарықдиодын жағу
GOTO $ ;программаның осы орында циклдануы
END
Тапсырма 3. 4.1 үзіндіге сүйеніп 13 Кестеден 4.1 тапсырма нұсқасын алып 4.1 программаны жазыңыз. Жағылатын жарықдиодтар нұсқа нөмірін көрсетсін.
Тапсырма 4. 4.1 программаны тапсырмада көрсетілген батырма көмегімен жарықдиодтарды өшіретін командалармен толықтырыңыз.
13 Кесте - 4.1 тапсырмасының нұсқалары
Нұсқа |
Жарықдиодтарын жағатын батырма |
Жарықдиодтарын өшіретін батырма |
Нұсқа |
Жарықдиодтарын жағатын батырма |
Жарықдиодтарын өшіретін батырма |
1 |
«1» |
«5» |
6 |
«6» |
«2» |
2 |
«2» |
«6» |
7 |
«7» |
«3» |
3 |
«3» |
«7» |
8 |
«8» |
«4» |
4 |
«4» |
«8» |
9 |
«9» |
«6» |
5 |
«5» |
«1» |
10 |
«0» |
«7» |
Ескерту – Программада жарықдиодтарын жағу және өшіру шексіз жүрсін. |
Тапсырма 5. 4.2 программа мысалында циклдар көмегімен уақыттық кешігуді ұйымдастыруды оқыңыз. Цикл санағыштарға максималды және минималды мәндер бере отырып такттық генератордың жиілігі 10 МГц болғандағы теориялық максималды және минималды кешігу уақытын анықтаңыздар.
Программа 4.2. Циклдарды ұйымдастыру.
include<p16F877.inc>
MIG EQU H'21' ;жану циклын санағыштың адресі.
TSIKL_IN EQU H'22' ;кешігудің ішкі цикл санығышының адресі.
TSIKL_OUT EQU H'23' ;кешігудің сыртқы цикл санығышының адресі.
org 0x000 ;программа 0-дік адрестен орындалады.
nop
nop
nop
org 10 ;10-шы адрестен бастау.
START CLRF STATUS ;status регистрін тазалау.
BSF STATUS,RP0 ;1-нші банкті таңдаймыз.
CLRF TRISC ;PORTC-ны шығысқа орнату.
CLRF STATUS ;0-нші банкті таңдаймыз.
MOVLW H'02'
MOVWF MIG ;2 рет жануды қайталауды орнатамыз.
LOOP
MOVLW H'FF'
MOVWF PORTC ;барлық жарықдиодтарын жағамыз.
CALL TIME_Z1 ;кешігудің ішкі программасын шақырамыз.
CLRF PORTC ;барлық жарықдиодтарын өшіреміз.
CALL TIME_Z2 ;кешігудің ішкі программасын шақырамыз.
DECFSZ MIG,1 ;MIG санағышының мәнін 1-ге азайтамыз ;да оның мәнін 0-ге тексереміз.
GOTO LOOP ;0 болса GOTO командасын орындамай
MOVLW H'FF'
MOVWF PORTC ;жарықдиодтарын жағамыз.
GOTO $ ;программа соңының сигналы.
TIME_Z1 ; TIME_Z1 кешігу ішкі программасы.
MOVLW H'02'
MOVWF TSIKL_OUT ;сыртқы санағыштың мәнін орнатамыз.
LOOP_OUT ; сыртқы санағыш белгісі.
MOVLW H'03'
MOVWF TSIKL_IN ; ішкі санағыш мәнін орнатамыз.
LOOP_IN ; ішкі санағыш белгісі.
DECFSZ TSIKL_IN,1 ;ішкі санағыш мәнін 1-ге кішірейтеміз,
GOTO LOOP_IN ;егер ол 0 болса GOTO командасынан ;өтіп кетеміз
DECFSZ TSIKL_OUT,1;сыртқы санағыш мәнін 1-ге кішірейтеміз,
GOTO LOOP_OUT ;егер ол 0 болса GOTO командасынан ;өтіп кетеміз
RETURN ;ішкі программа соңы.
END ;негізгі программа соңы.
Ескерту – TIME_Z2 ішкі программасы мұнда келтірілмегендіктен өздеріңіз толықтырасыздар.
Тапсырма 6. 14 кестедегі 4.2 тапсырманың берілген уақытқа жарықдиодтарын жағып, өшіретін 4.2 программаны жасаңыз.
14 Кесте - 4.2 тапсырма нұсқалары
Нұсқа |
Жарықдиодта рының жану уақыты, сек |
Жарықдиодта рының өшу уақыты, сек |
Нұсқа |
Жарықдиодта рының жану уақыты, сек |
Жарықдиодта рының өшу уақыты, сек |
1 |
0,5 |
5 |
6 |
3 |
2,5 |
2 |
1 |
4,5 |
7 |
3,5 |
2 |
3 |
1,5 |
4 |
8 |
4 |
1,5 |
4 |
2 |
3,5 |
9 |
4,5 |
1 |
5 |
2,5 |
3 |
10 |
5 |
0,5 |
Ескерту – Нұсқа нөмірін екілік жүйеде көрсетіп жарықдиодтарын жағатын программа жазыңыз. |
УМК-7-де зертханалық жұмысты орындауға тапсырма
Тапсырма 1. Дайындалған 4.1 программаны микропроцессорға енгізіп, жарықдиодтарының батырма басылуынан жанғанын оқытушыға көрсетіңіз.
Тапсырма 2. Үйде дайындаған 4.2 программаны микропроцессорға енгізіңіз. Программаны қадамдық режімде жөндеңіз, жану циклын 10-ға орнатып, автоматты режімде орындауға жіберіңіз. Цикл ұзақтығын реттеу нәтижелерін кестеге толтырыңыз (15 Кесте). Программа жұмысын оқытушыға көрсетіңіз.
15 Кесте - Кешігу циклын реттеу нәтижелері
Нұсқа |
Жарықдиодтарының жану көрсеткіштері |
Жарықдиодтарының өшу көрсеткіштері |
||||
Жарықдиод тарының жану уақыты, сек |
TSIKL_IN санағышы ның мәні |
TSIKL_ OUT санағышы ның мәні |
Жарықдиод тарының өшу уақыты, сек |
TSIKL_IN санағышы ның мәні |
TSIKL_ OUT санағышының мәні |
|
|
|
|
|
|
|
|
Бақылау сұрақтары
1 Клавиатураны қосу сұлбасын, оның программасын түсіндіріңіздер.
2 Барлық клавиатураны бақылауышқа қосқанда порт инициялизациясы қай ретпен жүреді?
3 Клавиатураны қай порттарға қосуға болады және неліктен?
4 Максимал және минимал кешігу мәндерін алу үшін цикл санағыштарға қандай сандар жазу керек?
5 Кешігу уақытын санау формуласын келтіріңіз.
6 Ішкі программалар ұйымдастыру кезінде стек қалай қолданылады?
7 PIC микро бақылауышында ішкі программаның ішінен ішкі программаны шақыруды қанша рет жазуға болады?
А Қосымшасы
УМК-7 сипаттамасы
Оқулық микропроцессорлық комплект УМК-7 қазіргі технологиялық процестерді АР, СОИ, ДБ жүйелерінде микропроцессор мен микробақылауыштарды қолдану облысының талаптарына сай мамандарды дайындау үшін құрылған. Студент PIC16F877 програмаланатын бақылауыш мысалында ассемблерді үйренумен қатар қазіргі микробақылауыштардың сыртқы және ішкі құрылымымен танысады.
Микробақылауыштың қондырылған программалаушы құрылғысы программаны компьютерден микробақылауышқа енгізуге арналған.
Микробақылауыштың “аяқтары” УМК-7-нің сыртқы клеммалық қосқыштарымен жалғанған. Клеммалық қосқыштар PIC микропроцессорының “аяқтарын” сыртқы құрылғыларымен қосуға арналған.
Сыртқы құрылғыларға келесілер жатады: клавиатура, жарықдиодттары, сұйықкристалдық индикатор, дыбыстық сигнализация құрылғысы, және де сыртқы аналогтық сигналды енгізуге арналған бос орын.
Стендтің алдыңғы панелімен танысыңдар (А.1 сурет), мұнда:
1 - микробақылауыш PIC16F877;
2 – клеммалық қосылыстар тізбегі (PIC16F877 “аяғы (соңы)”);
3 - клеммалық қосылыстар тізбегі (сыртқы құрылғылар “аяғы”);
4 - дыбыстық сигнализация;
5 - аналогтық кіріс;
6 - жарықтық сигнализация;
7 - сұйықкристалдық индикатор;
8 - клавиатура.
Микробақылауышты сыртқы құрылғылармен қосу үшін микробақылауыштың клеммалық қосылыстар тізбегін сыртқы құрылғылардың клеммалық қосылыстар тізбегінің керектілерімен қосқыш сым көмегімен жалғау керек.
MPLAB сипаттамасы
MPLAB-ICD – бұл PIC16F87X серия микробақылауыштарын сынаушы комплект. PIC16F87X кристалдарына қондырылған “ішкі сұлбалық жөндеуді (ICD)” және Microchip (ICSPTM) фирмасының “ішкі сұлбалық тізбектеп программалау протоколын” қолданып MPLAB-ICD-дың өзі программалаушы және ішкі сұлбалық жөндегіш болып табылады. Ол MPLAB IDE құраған интегралданған орта басқаруымен жұмыс істейді, жөндегіш құрылғыға қосылады да PIC16F87X микробақылауышы сияқты жұмыс істейді. MPLAB-ICD осы зертхана құрамында кодтарды жөндеуде және танысуда көмек үшін қажет.
MPLAB-ICD келесіні қамтамасыз етеді:
- нақты уақыт масштабында кодтарды қадам бойынша орындау;
- тоқтау нүктелерін (break points);
- ішкі сұлбалық жөндеу;
- қондырылған программалауды;
- жұмыс кернеу диапазоны 3.0V-тан 5.5V-қа дейін;
- жұмысшы жиілігі 32 КГц-тен 20 МГц-ке дейін;
- берілген код бойынша және символдық аттар бойынша орындау;
- қолданушы интерфейсі – MPLAB;
- Windows XXXX -пен үйлеседі;
- RS-232 интерфейс.
Б Қосымшасы
Status регистрі
Б.1 Кестесінде status регистрі биттерінің аты және олардың орналасуы көрсетілген. Олар арифметикалық және логикалық операцияларды басқаруда, банктерді таңдауда және басқа мақсаттарда қолданылады.
Б.1 Кесте - Status регистрінің биттері
Нөмірлер |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Аттар |
IRP |
RP1 |
RP0 |
-TO |
-PD |
Z |
DC |
C |
Б.1 Кестесінде келесі атаулар қабылданған:
- IRP жанама адресация кезінде банкті таңдау биті (IRP=1 - банк 2 немесе банк 3 таңдалады, IRP=0 - банк 0 немесе банк 1 таңдалады);
- RP1, RP0 тура адресация кезінде банкті таңдау биттері. Банк таңдау кезіндегі биттердің мәндері А.2 кестесінде көрсетілген;
- TO бақылаушы таймердің толу флагы;
- PD қорек көзінің қосылу флагы;
- Z нөлдік нәтиже флагы. Арифметикалық немесе логикалық операциялар нәтижесі нөлге тең болса оған “1” жазылады;
- DC ондық ауысу неме заем флагы. Ондық-екілік жүйеде қосу және алу командалары үшін егер кіші жартыбайттан ауысу болса “1” жазылады. Заем инверсиялы мән;
- C ауысу немесе заем флагы. Қосу және айырмасын алу командалары үшін егер үлкен биттен ауысу болса “1” жазылады. Заем инверсиялы мән.
Б.2 Кесте - RP1 және RP0 биттерімен банк нөмірін таңдау
RP1 |
RP0 |
Банк нөмірі |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
2 |
1 |
1 |
3 |
Регистрдің әрбір битімен аты бойынша немесе нөмірі бойынша қатынасуға болады. BTFSC STATUS, Z командасы BTFSC STATUS, 2 командасына пара-пар.
Status регистрін тазартқаннан кейінгі оның биттерінің мәндері Б.3 кестесінде көрсетілген.
Б.3 Кесте - CLRF STATUS командасынан кейінгі status регистрінің мәні
IRP |
RP1 |
RP0 |
-TO |
-PD |
Z |
DC |
C |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
В қосымшасы
PIC16877 микропроцессорының жады картасы
|
|
|
|
|
|
|
Адрес |
|
|
Жанама адресация регистрі |
00h |
Жанама адресация регистрі |
80h |
Жанама адресация регистрі |
100h |
Жанама адресация регистрі |
|
|
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 |
EEATH |
10Eh |
Резерв(2) |
18Eh |
|
TMR1H |
0Fh |
|
8Fh |
EEADRH |
10Fh |
Резерв(2) |
18Fh |
|
T1CON |
10h |
|
90h |
жалпы міндет регистрі 16 байт |
110h |
жалпы міндет регистрі 16 байт |
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 |
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 |
||
|
ADRESH |
1Eh |
ADRESL |
9Eh |
11Eh |
19Eh |
||
|
ADCON0 |
1Fh |
ADCON1 |
9Fh |
11Fh |
19Fh |
||
|
жалпы міндет регистрі 96 байт |
20h |
жалпы міндет регистрі 80 байт |
A0h |
жалпы міндет регистрі 80 байт |
120h |
жалпы міндет регистрі 80 байт |
1A0h |
|
|
|
|
|
||||
|
|
|
|
|
||||
|
|
|
|
|
||||
|
|
|
|
|
||||
|
|
EFh |
16Fh |
1EFh |
||||
|
|
70h-7Fh - қа өту |
F0h |
70h-7Fh - қа өту |
170h |
70h-7Fh - қа өту |
1F0h |
|
|
|
|
|
|
||||
|
|
|
|
|
||||
|
7Fh |
FFh |
|
|
||||
|
Банк 0 |
|
Банк 1 |
|
Банк 2 |
17Fh |
Банк 2 |
1FFh |
|
|
|
|
|
|
|
|
|
|
* -физикалық регистр емес |
|
|
|
|
|
||
|
Боялған орындардың қызметі жоқ |
|
|
|
|
|
||
|
Ескертулер |
|
|
|
|
|
|
|
|
1 Бұл регистрлер РІС16F876-да іске қосылмаған. |
|
|
|
||||
|
2 Резервтік регистрлер, қолданушы онымен жұмыс істемеуі керек. |
|
|
Г қосымшасы
PIC микропроцессорының кейбір командаларының сипаттамасы
Командалардағы d көрсеткіші операция нәтижесі қайда жазылатынын анықтайды. Егер d=0 болса нәтиже W регистрінде сақталады. Егер d=1 болса, нәтиже f регистрінде сақталады. Ал егер командада d көрсеткіші болмаса нәтиже W регистрінде сақталады.
ADDLW - W мен тұрақтыны қосу
Синтаксис: [label] ADDLW k
Оперантар: 0 £ k £ 255
Операция: (W) + k à (W)
Өзгеретін флагтар: С, DC, Z
ADDWF - W және f -ты қосу
Синтаксис: [label] ADDWF f,d
Оперантар: 0£f£127
Операция: (W) + (f) -»(dest)
Өзгеретін флагтар: C, DC, Z
ANDLW - тұрақты мен W арасындағы бит бойынша (побитная) 'ЖӘНЕ' операцисы
Синтаксис: [labef] ANDLW k
Операндтар: 0£k£255
Операция: (W) .AND. k à (W)
Өзгеретін флагтар: Z
ANDWF - W және f арасындағы бит бойынша 'ЖӘНЕ'
Синтаксис: [label] ANDWF f,d
Операндтар: 0 £ f £ 127
Операция: (W) .AND. (f) à (dest)
Өзгеретін флагтар: Z
BCF - f регистріндегі b битін тазарту
Синтаксис: [label] BCF f,b
Операндтар: 0£f£127; 0£b£7
Операция: 0 à (f<b>)
Өзгеретін флагтар: Жоқ
BSF - f регистрінде b битін орнату
Синтаксис: [label] BSF f,b
Операндтар: 0£f£127; 0£b£7
Операция: 1àf<b>
Өзгеретін флагтар: Жоқ
BTFSC - f регистріндегі b битін тексеру, егер 0 болса келесі командадан өтіп кету
Синтаксис: [label] BTFSC f,b
Операндтар: 0£f£127; 0£b£7
Операция: егер (f<b>) = 0 болса келесі командадан өтіп кету
Өзгеретін флагтар: Жоқ
Сипаттамасы: Егер f регистріндегі b биті '1'-ге тең болса, онда келесі нұсқау орындалады. Егер f регистріндегі b биті '0'-ге тең болса, онда келесі нұсқау орындалмайды.
BTFSS - f регистріндегі b битін тексеру, егер (f<b>) = 1 болса келесі командадан өтіп кету
Синтаксис: [label] BTFSS f,b
Операндтар: 0£f£ 127: 0£b£7
Операция: егер b биті '0'-ге тең болса келесі нұсқау орындалады, ал '1'-ге тең болса, онда келесі нұсқау орындалмайды.
CALL ішкі программаны шақыру
Синтаксис: [label] CALL
Операндтар: 0 £ k £ 2047
Операция: (PC)+1àTOS
kàPC<10:0>,
(PCLATH<4:3>)à PC<12:11>
Өзгеретін флагтар: Жоқ
Сипаттамасы: Ішкі программаны шақыру. Келесі команда адресі (РС+1) стектің ең жоғары жағына орналасады. Адрестің онбір биті команда кодынан команда санығышына (счетчигіне) РС<10:0> қондырылады. Екі үлкен биті PCLATH регистрінің комада санығышына РС<12:11> қондырылады. CALL командасы екі цикл орындалады.
CLRF - f-ті тазарту
Синтаксис: [label] CLRF
Операндтар: 0 £f £ 127
Операция: 00h à (f); 1 àZ
Өзгеретін флагтар: Z
Сипаттамасы: f регистрін тазарту және Z=1 флагын орнату.
CLRW - W регистрін тазарту
Синтаксис: [label] CLRW
Операндтар: Жоқ
Операция: 00h à (W), 1 à Z
Өзгеретін флагтар: Z
Сипаттамасы: W регистрін тазарту және Z=1 флагын орнату.
CLRWDT – WDT регистрін тазарту
Синтаксис: [label] CLRWDT
Операндтар: Жоқ
Операция: 00h à WDT,
00h à алдыңғы бөлгіш WDT,
1à -TO, 1 àPD
Өзгеретін флагтар: -TO, -PD
Сипаттамасы: CLRWDT командасы WDT- ны және алдыңғы бөлгішті де WDT-ға қосылып тұрса тазартады. Status регистрінде ТО және PD биттерін орнатады.
COMF - f инверсиясын алу.
Синтаксис: [label] COMF f,d
Операндтар: 0£f£127 dÎ [0,1]
Операция: (-f) à (dest)
Өзгеретін флагтар: Z
Сипаттамасы: f регистрінің барлық биттерінің инверсиясын алу.
DECF - f-ті 1-ге кеміту
Синтаксис: [label] DECF f,d
Операндтар: 0 £f £ 127 dÎ [0,1]
Операция: (f) - 1 à(dest)
Өзгеретін флагтар: Z
DECFSZ - f-ті 1-ге кемітіп, егер 0 болса келесі командадан өтіп кету
Синтаксис: [label] DECFSZ f,d
Операндтар: 0 £f £ 127 dÎ [0,1]
Операция: (f) -1 à (dest);
Өзгеретін флагтар: Жоқ
Сипаттамасы: f регистрін декременттеу. Егер оның нәтижесі '0'-ге тең болмаса келесі жол орындалады, ал 0-ге тең болса келесі жол орындалмайды.
GOTO – шартсыз өту операциясы
Синтаксис: [label] GOTO 0 £ k £ 2047
Операндтар:
Операция: Белгіге көшу
Өзгеретін флагтар: Жоқ
INCF - f –регистрін 1-ге өсіру
Синтаксис: [ label] INCF f,d
Операндтар: 0£f£127 dÎ [0,1]
Операция: (f) + 1 à (dest)
Өзгеретін флагтар: Z
INCFSZ - f-ті 1-ге өсіріп, егер 0 болса келесі командадан өтіп кету
Синтаксис: [label] DECFSZ f,d
Операндтар: 0 £f £ 127 dÎ [0,1]
Операция: (f) -1 à (dest);
Өзгеретін флагтар: Жоқ
Сипаттамасы: Егер оның нәтижесі '0'-ге тең болмаса келесі жол орындалады, ал 0-ге тең болса келесі жол орындалмайды.
IORLW - тұрақты және W арасындағы бит бойынша 'НЕМЕСЕ'
Синтаксис: [label] IORLW k
Операндтар: 0 £ k £ 255
Операция (W).OR. k à(W)
Өзгеретін флагтар: Z
IORWF - W және f арасындағы бит бойынша 'НЕМЕСЕ'
Синтаксис: [label] IORWF f,d
Операндтар: 0 £ f £ 127 dÎ [0,1]
Операция: (W).OR. (f) à(dest)
Өзгеретін флагтар: Z
MOVF - f мәнін жіберу
Синтаксис: [label] MOVF f,d
Операндтар: 0£f£127 dÎ [0,1]
Операция: (f) à(dest)
Өзгеретін флагтар: Z
Сипаттамасы: f регистрінің мәні адресат регистріне ауысады. Егер d=0 болса, мәні W регистрінде сақталады. Егер d=1 болса, мәні f регистрінде сақталады. d=1 мәні f регистрін 0-ге тексеру үшін қоланылады.
MOVLW - тұрақтыны W-ға жіберу
Синтаксис: [label] MOVLW k
Операндтар: 0 £ k £ 255
Операция: kà(W)
Өзгеретін флагтар: Жоқ
Сипаттамасы: Қолданылмайтын биттерге ассемблер '0' орнатады.
MOVWF - W -дағыны f-ке жіберу
Синтаксис: [label] MOVWF f
Операндтар: 0£f£127
Операция: (W) à (f)
Өзгеретін флагтар: Жоқ
NOP - операция жоқ
RETFIE - ішкі программадан үзуге рұқсатпен қайту
Синтаксис: [ label] RETFIE
Операндтар: Жоқ
Операция: TOS à PC, 1à GIE
Өзгеретін флагтар: Жоқ
Сипаттамасы: үзуді өңдейтін ішкі программадан қайту. TOS стегінің басы PC команда санағышқа қондырылады. GIE (INTCON<7>) толық үзуге рұқсат беру флагы '1'-ге орнатылады.
RETLW -тұрақтыны W регистрға орната ішкі программадан қайту
Синтаксис: [label] RETLW k
Операндтар: 0 £ k £ 255
Операция k à (W), TOS à PC
Өзгеретін флагтар: Жоқ
Сипаттамасы: W регистрына 8 разрядты тұрақты қондырылады. TOS стегінің басы PC команда санағышқа қондырылады.
RETURN -ішкі программадан қайту
Синтаксис: [label] RETURN
Операндтар: Жоқ
Операция: TOS à PC
Өзгеретін флагтар: Жоқ
Сипаттамасы: Ішкі программадан қайту. TOS стегінің басы PC команда санағышқа қондырылады.
RLF - f регистрін алмасу арқылы циклдық солға жылжыту
Синтаксис: [label] RLF f,d
Операндтар: 0£f£127 dÎ [0,1]
Операция: Сипаттамасын қара
Өзгеретін флагтар: С
Сипаттамасы: f регистрінің ішін status регистрінің С биті арқылы циклдық солға жылжыту орындалады.
RRF - f регистрін алмасу арқылы циклдық оңға жылжыту
Синтаксис: [label] RRF f,d
Операндтар: 0£f£127 dÎ [0,1]
Операция: Сипаттамасын қара
Өзгеретін флагтар: С
Сипаттамасы: f регистрінің ішін status регистрінің С биті арқылы циклдық оңға жылжыту орындалады.
SLEEP - SLEEP режиміне өту
Синтаксис: [label] SLEEP
Операндтар: Жоқ
Операция; 00h à WDT, 00h à алдыңғы бөлгіш WDT 1 à -ТО
0 à PD
Өзгеретін флагтар: -ТО, -PD
Сипаттамасы: PD - қорек көзі қосылу флагын '0'-ге орнату. ТО – WDT толу флагын '1'-ге орнату. WDT таймерін және оның алдыңғы бөлгішін тазарту. Микробақылауыш SLEEP режіміне ауысады, тактілік генератор өшеді.
SUBLW - тұрақтыдан W мәнін шегеру
Синтаксис: [label] SUBLW k
Операндтар: 0 £ k £ 255
Операция: k - W à W
Өзгеретін флагтар: C, DC, Z
SUBWF - f-тен W мәнін шегеру
Синтаксис: [label] SUBWF f,d
Операндтар: 0£f£127 dÎ [0,1]
Операция: (f) –(W) à (dest)
Измен, флаги: C, DC, Z
SWAPF - f регистріндегі жартыбайттарды алмастыру
Синтаксис: [label] SWAPF f.d
Операндтар: 0£f£127 dÎ [0,1]
Операция: (f<3:0>) à (dest<7:4>)
Өзгеретін флагтар: Жоқ
XORLW - W және тұрақты арасындағы бит бойынша 'НЕМЕСЕ-ні жоққа шығару '
Синтаксис: [ label] XORLW k
Операндтар: 0£k£255
Операция: (W) .XOR. k à (W)
Өзгеретін флагтар: Z
XORWF - W және f арасындағы бит бойынша 'НЕМЕСЕ-ні жоққа шығару '
Синтаксис: [label] XORWF f.d
Операндтар: 0£f£127 dÎ [0,1]
Операция: (W) .XOR. (f) à (dest)
Өзгеретін флагтар: Z
Д қосымшасы
Санақ жүйесі
Жүйеде қолданылатын сандар (символдар) санын оның негізі деп атайды. Инфомация тасымалдауышқа жазылатын информацияның минималды көлемін бит дейді. 8 информация тасымалдауыш бір жады ұяшығына біріктірілген, оған жазылатын ақпарат көлемін байт деп атайды. Микропроцессордың жадысындағы ақпарат екілік жүйеде көрсетілген.
Д.1 Кесте - Сандардың әртүрлі санақ жүйелерінде жазылуы
Ондық жүйе |
Екілік жүйе |
Сегіздік жүйе |
Оналтылық жүйе |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
2 |
10 |
2 |
2 |
3 |
11 |
3 |
3 |
4 |
100 |
4 |
4 |
5 |
101 |
5 |
5 |
6 |
110 |
6 |
6 |
7 |
111 |
7 |
7 |
8 |
1000 |
10 |
8 |
9 |
1001 |
11 |
9 |
10 |
1010 |
12 |
A |
11 |
1011 |
13 |
B |
12 |
1100 |
14 |
C |
13 |
1101 |
15 |
D |
14 |
1110 |
16 |
E |
15 |
1111 |
17 |
F |
16 |
10000 |
20 |
10 |
17 |
10001 |
21 |
11 |
Екілік жүйе сандарын адамға ыңғайлы жүйелерге ауыстыруға болады: сегіздік, оналтылық.
Екілік жүйедегі санды оналтылық жүйеге ауыстыру және керісінше.
Екілік санды оңнан солға қарай төрт-төртке бөлеміз. Әрбір төрттіктің жоғары кестеде көрсетілген эквивалентін жазамыз. Мысалы:
0101 1011 11012= 5ВD16.
Сандарды кері аудару үшін әрбір санның алдына нөл қойып төрт санға дейін толықтырып жазу керек: 116=00012, 216=00102. Ең бірінші тұған санның алдына нөл жазбаса да болады. Мысалы: 415С16=0100 0001 0101 11002=100 0001 0101 11002.
Әдебиеттер тізімі
1. Internet-тегі www.microchip.ru сайты.
2. Микроконтроллеры. Выпуск 2. /Перевод с английского языка Б.Я. Прокопенко/ Под редакцией Б.Я. Прокопенко. – М.: ДОДЕКА, 2000. -336 с.
Мазмұны
Кіріспе................................................................................................ ..............3
1 Зертханалық жұмыс 1. MPLAB ортасын зерттеу. РІС микропроцессорының жады картасын, шығару/енгізу порттарын зерттеу..............................................4
2 Зертханалық жұмыс 2. Қосу, алу. Логика. Жылжыту операциялары..... .100
3.Зертханалық жұмыс 3. Сандарды салыстыру. Маскілеу. Ауысуларды ұйымдастыру. Жанама адресацияны қолдану...................................................................... 133
4.Зертханалық жұмыс 4. Клавиатураны программалау. Ішкі программаларды жазу және олармен қатынасу........................................................................................... 18
А Қосымшасы......................................................................................... 23
Б Қосымшасы......................................................................................... 25
В Қосымшасы......................................................................................... 26
Г Қосымшасы........................................................................................ 267
Д Қосымшасы......................................................................................... 31
Әдебиеттер тізімі...........................................................................................32
2007 ж. қосымша жоспары, реті. 4
Көпесбаева Ақшолпан Әуелбековна
Тарасов Виталий Михайлович
Ибрашева Әсем Тұрсынғалиевна