Новичок
Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.4.2015
Репутация: нет Всего: нет
|
Учебный стенд НТЦ-31.100. ATMega128. Необходимо отобразить на ДСИ введённое число с клавиатуры и результат его побитовой инверсии. С выводом вышло всё, а вот с результатом его побитовой инверсии не выходит никак. Подскажите, что и как добавить нужно? Код | .include "m128def.inc"
.equ Sgm_A=0b01111111 .equ Sgm_B=0b10111111 .equ Sgm_D=0b11011111 .equ Sgm_E=0b11101111 .equ Sgm_F=0b11110111 .equ Sgm_C=0b11111011 .equ Sgm_H=0b11111101 .equ Sgm_G=0b11111110
.equ Symbol=(Sgm_A&Sgm_B&Sgm_E&Sgm_F&Sgm_G) .equ symbolB=(Sgm_C&Sgm_D&Sgm_E&Sgm_F&Sgm_G) .dseg .org 0x200 VideoD: .byte 8 Video: .byte 8 .cseg .org 0 jmp INIT Symbols:.DB Sgm_A&Sgm_B&Sgm_C&Sgm_D&Sgm_E&Sgm_F,Sgm_B&Sgm_C,Sgm_A&Sgm_B&Sgm_D&Sgm_E&Sgm_G,Sgm_A&Sgm_B&Sgm_C&Sgm_D&Sgm_G .DB Sgm_B&Sgm_C&Sgm_F&Sgm_G,Sgm_A&Sgm_C&Sgm_D&Sgm_F&Sgm_G,Sgm_A&Sgm_C&Sgm_D&Sgm_E&Sgm_F&Sgm_G,Sgm_A&Sgm_B&Sgm_C .DB Sgm_A&Sgm_B&Sgm_C&Sgm_D&Sgm_E&Sgm_F&Sgm_G,Sgm_A&Sgm_B&Sgm_C&Sgm_D&Sgm_F&Sgm_G .DB Sgm_A&Sgm_B&Sgm_C&Sgm_E&Sgm_F&Sgm_G,Sgm_C&Sgm_D&Sgm_E&Sgm_F&Sgm_G .DB Sgm_A&Sgm_D&Sgm_E&Sgm_F,Sgm_B&Sgm_C&Sgm_D&Sgm_E&Sgm_G,Sgm_A&Sgm_D&Sgm_E&Sgm_F&Sgm_G,Sgm_A&Sgm_E&Sgm_F&Sgm_G
KeyTable: .DB 7,4,1,10,8,5,2,0,9,6,3,11 binar: .DB 0b0111,0b0100,0b0001,0b1010,0b1000,0b0101,0b0010,0b0000,0b1001,0b0110,0b0011,0b1011 inver: .DB 0b1000,0b1011,0b1110,0b0101,0b0111,0b1010,0b1101,0b1111,0b0110,0b1001,0b1100,0b0100 INIT: ldi R16,0xFF out ddrA,R16 ldi R16,0b00001111 out ddrC,R16 ldi R17,0 out portC,R17
ldi R16,0xFF sts VideoD,R16 ldi R16,0xFF sts VideoD+1,R16 ldi R16,0xFF sts VideoD+2,R16 ldi R16,0xFF sts VideoD+3,R16 ldi R16,0xFF sts VideoD+4,R16 ldi R16,0xFF sts VideoD+5,R16 ldi R16,0xb sts VideoD+6,R16 ldi R16,0x0 sts VideoD+7,R16
ldi R26,low(Video) ;X = Video ldi R27,high(Video) ldi R24,0
Start: out portC,R24 ld R16,X+ out portA,R16 cbi portC,3 sbi portC,3
dec R25 ;<<<<<----------l brne PC-1;---------------l
ldi R16,0xFF out portA,R16 cbi portC,3 sbi portC,3
in R16,pinC andi R16,0b11100000
breq PC+20 ;------------------------l
swap R16 ;l lsr R16 ;l clc ;l ldi R17,-1 inc R17 ;l<<<<<----l lsr R16 ;l l brcc PC-2 ;--------------------------------l lsl R17 lsl R17 ;l add R17,R24 ;l andi R17,0x0F ;l ldi R18,0 ;l ldi R30,low(2*KeyTable) ;Z = KeyTable ldi R31,high(2*KeyTable) ;l add R30,R17 ;l adc R31,R18 ;l lpm R10,Z ;l sts VideoD,R10 ;l
inc R24 ;<<<<-----l andi R24,7 brne PC+18 ;---------l
ldi R26,low(Video) ;X = Video l ldi R27,high(Video) ;l ldi R28,low(VideoD) ;Y = VideoD l ldi R29,high(VideoD) ;l ldi R16,8 ;l ldi R21,0 ;l ldi R30,low(2*Symbols) ;Z = Symbols <<<--ll ;l ldi R31,high(2*Symbols) ;l ;l ld R20,Y+ ;l ;l add R30,R20 ;l ;l adc R31,R21 ;l ;l lpm R10,Z ;l l st X+,R10 ;l l dec R16 ;l l brne PC-8 ;--------------------l l ldi R26,low(Video) ;X = Video l ldi R27,high(Video) ;l
jmp Start ;<<<<<<<<--------------lll ;;;;;;;
|
Это сообщение отредактировал(а) Scratok - 25.4.2015, 19:51
|