Проектирование цифровых устройств на микроконтроллерах семейства MCS-51
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
тами;- флаг вспомогательного (дополнительного) переноса;- флаг пользователя - устанавливается, сбрасывается и проверяется программно;- Флаг арифметического переполнения; его значение определяется операцией "Исключающее ИЛИ" сигналов входного и выходного переносов старшего разряда АЛУ; единичное значение этого флага указывает на то, что результат арифметической операции в дополнительном коде занял знаковый разряд; при выполнении операции деления флаг OV сбрасывается, а в случае деления на ноль - устанавливается; при умножении флаг OV устанавливается, если результат больше 255 (0FFH);
Разряд PSW[1] - Резервный, содержит триггер, доступный по записи или чтению; P - флаг паритета - является дополнением аккумулятора до четности; формируется комбинационной схемой (программно доcтупен только по чтению).
В микроконтроллерах MCS-51 отсутствует флаг Z. Но в командах условного перехода (JZ, JNZ) проверяется комбинационной схемой текущее (нулевое) содержимое Аккумулятора
Таблица 5 -- Таблица ассемблера MCS-51
\ Rn 01234567\ @RiR0R1Прямая адресацияНепосредственнаяMOV A,RnE8E9EAEBECEDEEEFMOV A,@RiE6E7MOV AE5, dirMOV A74,#DATMOV Rn,AF8F9FAFBFCFDFEFFMOV @Ri,AF6F7MOV dirF5, AMOV dir75,#DATMOV Rn78797A7B7C7D7E7F,#DATMOV @Ri7677,#DATMOV dirB5, dirMOV RnA8A9AAABACADAEAF , dirMOV @RiA6A7 , dirPUSHC0, dirMOV DPTR90,#D16MOV dirB8B9BABBBCBDBEBF , RnMOV dirB6B7 , @RiPOPD0, dirXCH A,RnC8C9CACBCCCDCECFXCH A,@RiC6C7XCH AC5, dirSWAP AC4<Обмен тетрад АккумулятораXCHD A,@RiD6D7<Обмен младших тетрадПересылки ВПД с АккMOVX A,@DPTRE0MOVX A,@RiE2E3Пересылки из Пам. Прогр. в АккMOVC A,@A+DPTR93MOVX @DPTR,AF0MOVX @Ri,AF2F3MOVC A,@A+PCB3
Арифметические и логические команды
Комментарии\Rn01234567\@RiR0R1Прям. адресацияНепосредственнаяА<А+( )ADD A,Rn28292A2B2C2D2E2FADD A,@Ri2627ADD A25,dirADD A,24,#DATA<А+( )+CADDC A,Rn38393A3B3C3D3E3FADDC A,@Ri3637ADDC A35,dirADDC A34,#DATA<А-( )-CSUBB A,Rn98999A9B9C9D9E9FSUBB A,@Ri9697SUBB A95,dirSUBB A94,#DAT( )< ( ) + 1INC Rn08090A0B0C0D0E0FINC @Ri0607INC05,dirINC A04( )< ( ) - 1DEC Rn18191A1B1C1D1E1FDEC @Ri1617DEC15,dirDEC A14А<А & ( )ANL A,Rn58595A5B5C5D5E5FANL A,@Ri5657ANL A55,dirANL A54,#DAT( )<( ) & АANL dir52,AANL dir53,#DATА<А \/ ( )ORL A,Rn48494A4B4C4D4E4FORL A,@Ri4647ORL A45,dirORL A44,#DAT( )<( ) \/ АORL dir42,AORL dir43,#DATА<А (+) ( )XRL A,Rn68696A6B6C6D6E6FXRL A,@Ri6667XRL A65,dirXRL A64,#DAT( )<( ) (+) АXRL dir62,AXRL dir63,#DATBA < A BMUL ABA4INC DPTR52СбросCLR AE4Циклический сдвигRL A23RR A03A . B < A / BDIV ABB4DA AD4ИнверсияCPL AF4Сдвиг через переносRLC A33RRC A13
Флаг OV при выполнении операции деления - сбрасывается, а в случае деления на ноль - устанавливается; при умножении флаг OV устанавливается, если результат больше 255 (0FFH)
Флаги : Р (четности Аккумулятора) и Z (нулевого содержимого Аккумулятора) формируются комбинационными схемами. Эти флаги модифицируются любыми командами, изменяющими содержимое Аккумулятора
Таблица 7 - Таблица дизассемблера MCS-51
012345670NOPAJMP S0+8ADRLJMP 16ADRRR AINC AINC dirINC @R0INC @R11JBC bit,relACALL S0+8ADRLCALL 16ADRRRC ADEC ADEC dirDEC @R0DEC @R12JB bit,relAJMP S1+8ADRRETRL AADD A,#DATADD A,dirADD A,@R0ADD A,@R13JNB bit,relACALL S1+8ADRRETIRLC AADDC A,#DATADDC A,dirADDC A,@R0ADDC A,@R14JC relAJMP S2+8ADRORL dir,AORL dir, #DATORL A,#DATORL A,dirORL A,@R0ORL A,@R15JNC relACALL S2+8ADRANL dir,AANL dir, #DATANL A,#DATANL A,dirANL A,@R0ANL A,@R16JZ relAJMP S3+8ADRXRL dir,AXRL dir, #DATXRL A,#DATXRL A,dirXRL A,@R0XRL A,@R17JNZ relACALL S3+8ADRORL C,bitJMP @A +DPTRMOV A,#DATMOV dir, #DATMOV @R0, #DATMOV @R1, #DAT8SJMP relAJMP S4+8ADRANL C,bitMOVC A,@A+PCDIV ABMOV dir,dirMOV dir,@R0MOV dir,@R19MOV DPTR, #D16ACALL S4+8ADRMOV bit,CMOVC A,@A+ DPTRSUBB A,#DATSUBB A,dirSUBB A,@R0SUBB A,@R1AORL C,/bitAJMP S5+8ADRMOV C,bitINC DPTRMUL ABMOV @R0,dirMOV @R1,dirBANL C,/bitACALL S5+8ADRCPL bitCPL CCJNE A,#DAT,relCJNE A,dir,relCJNE @R0,#D,relCJNE @R1,#D.relCPUSH DirAJMP S6+8ADRCLR bitCLR CSWAP AXCH A,dirXCH A,@R0XCH A,@R1DPOP dirACALL S6+8ADRSETB bitSETB CDA ADJNZ dir,relXCHD A,@R0XCHD A,@R1EMOVX A, @DPTRAJMP S7+8ADRMOVX A,@R0MOVX A,@R1CLR AMOV A,dirMOV A,@R0MOV A,@R1FMOVX @DPTR,AACALL S7+8ADRMOVX @R0,AMOVX @R1,ACPL AMOV dir,AMOV @R0,AMOV @R1,A01234567
Таблица дизассемблера MCS-51
01234567INC R0INC R1INC R2INC R3INC R4INC R5INC R6INC R70DEC R0DEC R1DEC R2DEC R3DEC R4DEC R5DEC R6DEC R71ADD A,R0ADD A,R1ADD A,R2ADD A,R3ADD A,R4ADD A,R5ADD A,R6ADD A,R72ADDC A,R0ADDC A,R1ADDC A,R2ADDC A,R3ADDC A,R4ADDC A,R5ADDC A,R6ADDC A,R73ORL A,R0ORL A,R1ORL A,R2ORL A,R3ORL A,R4ORL A,R5ORL A,R6ORL A,R74ANL A,R0ANL A,R1ANL A,R2ANL A,R3ANL A,R4ANL A,R5ANL A,R6ANL A,R75XRL A,R0XRL A,R1XRL A,R2XRL A,R3XRL A,R4XRL A,R5XRL A,R6XRL A,R76MOV R0, #DATMOV R1, #DATMOV R2, #DATMOV R3, #DATMOV R4, #DATMOV R5, #DATMOV R6, #DATMOV R7, #DAT7MOV dir,R0MOV dir,R1MOV dir,R2MOV dir,R3MOV dir,R4MOV dir,R5MOV dir,R6MOV dir,R78SUBB A,R0SUBB A,R1SUBB A,R2SUBB A,R3SUBB A,R4SUBB A,R5SUBB A,R6SUBB A,R79MOV R0,dirMOV R1,dirMOV R2,dirMOV R3,dirMOV R4,dirMOV R5,dirMOV R6,dirMOV R7,dirACJNE R0,#D, relCJNE R1,#D, relCJNE R2,#D, relCJNE R3,#D, relCJNE R4,#D, relCJNE R5,#D, relCJNE R6,#D, relCJNE R7,#D, relBXCH A,R0XCH A,R1XCH A,R2XCH A,R3XCH A,R4XCH A,R5XCH A,R6XCH A,R7CDJNZ R0,relDJNZ R1,relDJNZ R2,relDJNZ R3,relDJNZ R4,relDJNZ R5,relDJNZ R6,relDJNZ R7,relDMOV A,R0MOV A,R1MOV A,R2MOV A,R3MOV A,R4MOV A,R5MOV A,R6MOV A,R7EMOV R0,AMOV R1,AMOV R2,AMOV R3,AMOV R4,AMOV R5,AMOV R6,AMOV R7,AF01234567
Таблица 8 - Команды пересылки, обмена и загрузки
КомментарииМнемокодК О ПТКБМЦA < Rn; Пересылка из РОНа в АккMOV A,Rn11101rrr111A < (Ri); Пересыдка из РПД в АккMOV A,@Ri1110011i111A < (dir); Пересылка из РПД в АккMOV A,dir11100101321A < #DAT; Загрузка байта в АккMOV A,#DAT01110100221Rn < A; Пересылка из Акк. в РОНMOV Rn,A11111rrr111(Ri) < A; Пересылка из Акк. в РПДMOV @Ri,A1111011i111(dir) < A; Пересылка из Акк. в РПДMOV dir,A11110101321(dir) < #DAT; Загрузка байта в РПДMOV dir,#DAT01110101732Rn < #DAT; Загрузка байта в РОНMOV Rn,#DAT01111rrr221(Ri) < #DAT; Загрузка байта в РПДMOV @Ri,#DAT0111011i221(dir)<(dir); Пересыл. из РПД в РПДMOV dir,dir10000101932Rn < (dir); Пересылка из РПД в РОНMOV Rn, dir10101rrr322(Ri)<(dir); Пересылка из РПД в РПДMOV @RI,dir1010011i322(dir) Таблица 9 - Арифметические и логические команды