АЛМАТЫ ЭНЕРГЕТИКА ЖӘНЕ БАЙЛАНЫС ИНСТИТУТЫ

ИНЖЕНЕРЛІК КИБЕРНЕТИКА КАФЕДРАСЫ

 

 

  

АВТОМАТИКА ҚҰРЫЛҒЫЛАРЫ МЕН ЭЛЕМЕНТТЕРІ

МИКРОПРОЦЕССОРЛЫҚ КОМПЛЕКТ

 

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 файл құрады.

Edit Project терезесін жабу үшін OK басыңыз.

 

Дайын жобаны 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 регистрлерінің күйін бақылаңыз, ол үшін WindowWatch WindowNew 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, ANDWFIORWFXORWF, SUBWFBCFBSFCOMFSWAPFRRFRLF командаларының орындалуын зерттеу.

Қондырғы және программалық қамтама: 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

1

2

5

56

2

3

10

АВ

3

2

 Программа 2.1

    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 арасындағы бит бойынша  'ЖӘНЕ'

Синтаксис: [labelANDWF   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

Операция: (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

Операндтар: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

 Көпесбаева Ақшолпан Әуелбековна

Тарасов Виталий Михайлович

Ибрашева Әсем Тұрсынғалиевна