- •Сандық техниканы және басқару микробақылауыштарын программалау
- •5В070200-Автоматтандыру және басқару мамандығының студенттері
- •Мазмұны
- •Кіріспе
- •1 Зертханалық жұмыс. Байттық және биттік командалар. Логика
- •1.1 Зертханалық жұмыс тапсырмасы
- •1.2 Жұмысты орындау тәртібі
- •1.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •1.4 Бақылау сұрақтары
- •2 Зертханалық жұмыс. Маскілеу. Массив қосындысын алу
- •2.1 Зертханалық жұмыс тапсырмасы
- •2.1 Сурет– Массивті суммалау және орташаны табу блок-сұлбасы
- •2.2 Жұмысты орындау тәртібі
- •2.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •2.4 Бақылау сұрақтары
- •3 Зертханалық жұмыс. Бояу камерасын автоматтандыру. Ішкі программалар
- •3.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •3.1 Сурет–Құрылғылардыжалғау сұлбасы
- •3.2 Сурет–Бояу камерасының уақыттық диаграммасы
- •3.2 Жұмысты орындау тәртібі
- •3.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •3.3 Сурет– Блок-сұлба
- •3.4 Бақылау сұрақтары
- •4 Зертханалық жұмыс. Көбейту және бөлу
- •4.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •4.2 Жұмысты орындау тәртібі
- •5 Зертханалық жұмыс. Газ шығынын реттеу
- •5.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •5.2 Жұмысты орындау тәртібі
- •5.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •5.4 Бақылау сұрақтары
- •6.3 Жұмысты орындау тәртібі
- •6.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •6.4 Бақылау сұрақтары
- •7 Зертханалық жұмыс. Буып-түю жұмысын автоматтандыру. Дыбыс түзу
- •7.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •7.2 Жұмысты орындау тәртібі
- •7. 3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •7.2 Сурет– Буып-түйгіш жұмысының уақыттық диаграммасы
- •7.4 Бақылау сұрақтары
- •8 Зертханалық жұмыс. Сандарды 2-санақ жүйесінен 2_10 санақ жүйесіне ауыстыру
- •8.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •8.2 Жұмысты орындау тәртібі
- •8.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •8.2 Сурет– Блок-сұлба
- •8.3 Сурет – Жеті сегментті индикатор
- •8.4 Бақылау сұрақтары
- •9 Зертханалық жұмыс. Таймер tmr1
- •9.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •9.2 Жұмысты орындау тәртібі
- •9.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •9.4 Бақылау сұрақтары
- •10 Зертханалық жұмыс. Үзулер
- •10.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •10.3 Жұмысты орындау тәртібі
- •10.3 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •10.4 Бақылау сұрақтары
- •11 Зертханалық жұмыс. Екі байттық сандарды қосу
- •11.1 Зертханалық жұмыс тапсырмасы және берілгендер
- •11.3 Жұмысты орындау тәртібі
- •11.1 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
- •11.4 Бақылау сұрақтары
- •А қосымшасы Status регистрі
- •Б қосымшасы pic* мб нұсқауларының сипаттамасы
- •В қосымшасы Модуль tmr1 таймері
- •Г қосымшасы pic16877 микропроцессорының жады картасы
- •Д қосымшасы умк-7 сипаттамасы
- •Әдебиеттер тізімі
- •5В070200- Автоматтандыру және басқару мамандығының студенттері үшін зертханалық жұмыстарды орындауға арналған әдістемелік нұсқау
- •050013, Алматы, Байтұрсынұлы көшесі, 126
- •Сандық техниканы және микробақылауыштарды программалау
- •5В070200- Автоматтандыру және басқару мамандығының студенттері үшін зертханалық жұмыстарды орындауға арналған әдістемелік нұсқау
10.4 Бақылау сұрақтары
Event,Sum, _Work,W, _Status,Status мәндерін қалай қалпына келтіруге болады?
Үзуді өңдегіштен бас программаға арналған ішкі программаны шақыруға болады ма?
Үзу дегеніміз не?
Үзуге рұқсат қалай беріледі?
Үзу флагының қызметі?
Контакттар «дребезгі» дегеніміз не?«Дребезгтен» қорғау.
Фондық программа дегеніміз не?
Үзу векторы қай адресте орналасқан?
Қайта жіберу векторы дегеніміз не?
Status регистрін сақтау үшін неге SWAPF командасы қолданылады?
Тәжірибеде программаның күткен нәтижесін бұзатын қандай бөгеттер (помехи, наводки) бар?
W және Status регистрлерінің мәні қандай мақсатта сақталады?
11 Зертханалық жұмыс. Екі байттық сандарды қосу
Жұмыс мақсаты: әртүрлі санақ жүйесіндегі екі байттық сандарды қосу прораммасын жазуды үйрену.
11.1 Зертханалық жұмыс тапсырмасы және берілгендер
Жұмыста қолданылатын регистрлердің символдық аттары 11.1-суретте және 11.1-кестеде келтірілген.
Л11 программасыныңфрагменттері.Екібайттық сандарды қосу.
МБ жұмысын реттеу және айнымалыларға ат беру көрсетілмеген.
CLRF SUM_M ; қосындыға арналған регистрлерді тазартамыз.
CLRF SUM_S
CLRF SUM_3
; Бірінші қосылғышты енгіземіз
MOVLW h’04’
MOVWF S1_M ; кіші байт S1_M= h’04’.
MOVLW h’FF’
MOVWF S1_S ; үлкен байт S1_S= h’FF’.
; Екінші қосылғышты енгіземіз
MOVLW h’FE’
MOVWF S2_M ; кіші байт S2_M=h’FE’.
MOVLW h'FF'
MOVWF S2_S ; үлкен байт S2_S= h'FF'.
; S1_M және S2_M кіші байттарын қосу
MOVF S1_M, W
ADDWF S2_M, W
MOVWF SUM_M
BTFSC STATUS, C; егер ауысу (толу) болса, қосынды 255-тен үлкен, онда
INCF SUM_S, F ; С=1 кезінде байтты өсіреміз.
; Үлкен байттарын қосу
MOVF SUM_S, W
ADDWF S1_S, W
BTFSC STATUS, C ;ауысу болды ма?
INCF SUM_3, F ; қосындының үшінші байтын тек С=1 болғанда өсіреміз.
ADDWF S2_S, W
MOVWF SUM_S
BTFSC STATUS, C; ауысу болды ма?
INCF SUM_3, W ; қосындының үшінші байтын тек С=1 болғанда өсіреміз.
GOTO$
END
11.3 Жұмысты орындау тәртібі
11.1және11.2 кестелеріндегі тапсырмалар бойынша оналтылық санақ жүйесін қолданып екі байттық сандарды қосуды орындаңыздар.Нәтижелерін 11.3және11.4 кестелеріне толтырыңыздар.
11.1 кесте–Бүтін ондық сандар үшін тапсырма нұсқалары
Нұсқа |
Сан S1 |
Сан S2 |
Нұсқа |
Сан S1 |
Сан S2 |
1 |
60001 |
10001 |
6 |
65406 |
60006 |
2 |
30002 |
20002 |
7 |
60007 |
10007 |
3 |
40003 |
30003 |
8 |
30008 |
20008 |
4 |
65504 |
40004 |
9 |
40009 |
30009 |
5 |
64505 |
50005 |
10 |
50010 |
40010 |
11.2 кесте–Бөлшек ондық сандар үшін тапсырма нұсқалары
Нұсқа |
Сан S1 |
Сан S2 |
Нұсқа |
Сан S1 |
Сан S2 |
1 |
110,01 |
110,1 |
6 |
160,06 |
160,6 |
2 |
120,02 |
120,2 |
7 |
170,07 |
170,7 |
3 |
130,03 |
130,3 |
8 |
180,08 |
180,8 |
4 |
140,04 |
140,4 |
9 |
190,09 |
190,9 |
5 |
150,05 |
150,5 |
10 |
200,10 |
200,20 |
11.1 Жұмыс тақырыбы бойынша қысқаша теориялық ақпарат
Сандарды қосу технологиялық процесс көрсеткіштерін қосу кезінде қолданылады. Қосынды мәндерін зерттеп қондырғыны басқару процесіне бір өзгертулер енгізеді.
Бір байтқа 0-ден255-ке дейінгі сандарды жазуға болады. Кейбір практикалық есептер үшін бұл жеткіліксіз. Егер екі байт қолданса, онда 0-ден 65535-ке дейінгі сандарды жазуға болады. Сандарды он алтылық санақ жүйесінде беріп қосуға болады.
Мысалы, 65284және65534 ондық жүйедегі сандарды қосу керек.Сандарымызды 16-лықжүйеде көрсетейік, әрқайсын екі регистрге жазамыз, 11.3-кестеге қараңыздар. Зертханалық жұмыста бұл байттар әрбір қосылғыш үшін үлкен және кіші байттар деп аталады, мысалы h’23’ және h’22’.
11.3кесте–Сандарды оналтылық кодта қосу
Атаулар |
Ондық жүйе |
Оналтылық жүйе | ||
Қосылғыштар немесе SUM_3 |
Үлкен байттар (регистрлер) |
Кіші байттар (регистрлер) | ||
1-ші қосылғыш |
65284 |
h’FF04’ |
S1_S =h’FF’ |
S1_M =h’04’ |
2- ші қосылғыш |
65534 |
h’FFFE’ |
S2_S =h’FF’ |
S2_M =h’FE’ |
Табылған қосынды |
130818 |
SUM_3=h’01’ |
SUM_S=h’FF’ |
SUM_M =h’02’ |
Нәтижесін ондық санақ жүйесінде көрсетейік:h’01FF02’1164+15163+15162+0161+2160=65536+61440+3840+0+2=130818.
Байттарды қосқан кезде егер қосындыh’FF’ (яғни 255-тен) жоғары болса, онда үлкен байттың 0-нші битіне 1 қосуды ескеру керек.Қосынды үш байт шығатыны анық. Регистрдің толу кезі Status регистрінің С битінде көрсетіледі, яғни ол 1-ге тең. Осы кезді қолданып үлкен байттын 1-ге өсіруді орындаймыз, яғни арифметикалық ауысу болады.
Басқа жағынан қарасақ үлкен байтта санның бүтін бөлігі көрсетілген, ал кіші байтта бөлшек бөлігі бар деп қарастыруға болады. Мұндай санды көпмүшеге келтіреміз A=K2162+ К1161+K0160+ K-1/16-1+К-2/16-2.
Ондық жүйедегі 255,017 және 255,991 бөлшек сандарды қосайық. Бұл сандарды қосу үшін бөлшек және бүтін бөліктерін бөлек оналтылық санақ жүйесіне өткізіп қосамыз [2].
Санның бүтін бөлігін 16 санақ жүйесіне аудару алгоритмі:
Алгоритм басы
Берілген санның бүтін бөлігін енгізу
Бөлінгішті берілген санға теңестіру
Бөлінгіш нөл болғанға дейін келесіні қайталау:
Бөлінгішті 16-ға бөліп бүтін бөлігін және қалдығын табу
Қалдығын есте сақтау
Бөлінгішті бүтін бөлікке теңестіру
Цикл соңы
Алгоритм соңы
Мысалы, 255 санын 16 санақ жүйесіне аударайық: 255:16=15(15) 15:16=0 (15).
онымен, 16 санақ жүйесіне алғанымыз 25510=FF16.
Санның бөлшек бөлігін 16 санақ жүйесіне аудару алгоритмі:
Алгоритм басы
Берілген санның бөлшек бөлігін енгізу
Көбейтілгішті енгізілген санға теңестыру
Көбейтінді 0-ден үлкен болса келесіні қайталай беру:
Көбейтілгіштің 16-ға көбейтіндісін табу
Көбейтіндінің бүтін бөлігін нәтижеге 16 жүйедегі сан ретінде жазу
Егер барлық маңызды сандар табылса, онда циклдан шығу
Цикл соңы
Алгоритм соңы
Бірінші қосылғыштың бөлшек бөлігін үш санға дейінгі дәлдікпен оналтылық жүйеге ауыстырайық, содан кейін дөңгелектейміз.
0.01716=0.272; 0.27216=4.352; 0.35216=5.63.
Сонымен, 0.01710=0.0416.Үшінші 5 цифрасы8-ден кіші болғандықтан қарастырмаймыз.
Екінші қосылғыштың бөлшек бөлігі:
0.99116=15.856; 0.85616=13.696; 0.69616=11.136.
Сонымен, 0.99110=0.FDB16.
Оналтылық жүйеде алынған санды екі санға дейін дөңгелектеп алатынымыз 0,99110=0,FE16.
Программа жұмысының нәтижесінде алынған мәндер 11.4 кестеде көрсетілген.
11.4 кесте–Екі байттық бөлшек сандарды қосу
Атаулар |
Ондық жүйе |
Оналтылық жүйе | ||
Қосылғыштар немесе SUM_3 |
Үлкен байттар (регистрлер) |
Кіші байттар (регистрлер) | ||
1-ші қосылғыш |
255,017 |
h’FF,04’ |
S1_S =h’FF’ |
S1_M =h’04’ |
2- ші қосылғыш |
255,991 |
h’FF,FE’ |
S2_S =h’FF’ |
S2_M =h’FE’ |
Алынған қосынды |
511,008 |
SUM_3=h’01’ |
SUM_S=h’FF’ |
SUM_M =h’02’ |
Оналтылық жүйеде алынған h’01FF,02’ нәтижені ондық жүйеге келтірейік:
Sum=1162+15161+15160+016-1+216-2=256+240+15+0+0,0078,
=511,0078.
Осыдан көргеніміздей екі жағдайдағы да нәтиже бөлшек мәніне дейін тура келді.
11.1-суретте екібайттық сандарды қосу блок-сұлбасы көрсетілген, онда қосылғыштар берілген деп қарастырылады.
11.1 сурет – Блок-сұлба