Ejercicios ASM
Elemental_01.asm: Por el puerto B se obtiene el dato de las cinco líneas del Puerto A , al que se está conectado un array de interruptores , sumándole el valor de una constante , por ejemplo 74 decimal. Es decir (PORTB)= (PORTA)+Constante
1);====================================================================
Main
;====================================================================
; El código que sigue es un ejemplo de configuración de puertos
; Configuro los puertos I/O
BANK1
movlw b'11111'
movwf TRISA ;todo el PORTA como entrada
movlw b'00000000' ;todo el PORTB como salida
movwf TRISB
BANK0
;====================================================================
; Programa principal
;====================================================================
ABC
movf PORTA,W
addlw K
movf PORTB
goto ABC
;====================================================================
Elemental_02.asm: Por el Puerto B se obtiene el dato del Puerto A multiplicando por 2. Es decir : (PORTB) = 2(PORTA) =(PORTA)+(PORTA)
;====================================================================
Main
;====================================================================
; A partir de aqui se escribe el pgm principal
; A partir de aquí incluí tu código
; El código que sigue es un ejemplo de configuración de puertos
; Configuro los puertos I/O
BANK1
movlw b'11111'
movwf TRISA ;todo el PORTA como entrada
movlw b'00000'
movwf TRISB
BANK0
;====================================================================
; Programa principal
;====================================================================
movf PORTA,W
addwf PORTA,PORTB
;====================================================================
3)
9)
Elemental_10.asm: Por el Puerto B se obtiene el dato de las cinco líneas del Puerto A al que esta conectado un array de interruptores. Esta operación se realizará una única vez . Despues del programa entrara en modo Standby o de bajo consumo el cual no podrá salir
10)
{
while(1){
output_b(input_a()+55);
}
}
2)
void main()
{
while(1){
output_b(input_a()*2);
}
}
3)
void main()
{
while(1){
output_b(input_a()|0b10101);
}
}
4)
{
while(1){
output_b(input_a()&0b10101);
}
}
5)
void main()
{
while(1){
output_b(input_a()^01010101);
}
}
6)
void main()
{
while(1){
swap(input_a());
output_b(input_a());
}
}
7)
void main()
{
while(1){
rotate_left(input_a(), 1);
bit_set(input_a(),0);
output_b(input_a());
}
}
8)
void main()
{
while(1){
rotate_right(input_a(), 1);
output_low(input_a(),7);
output_b(input_a());
}
}
9)
void main()
{
while(1){
output_b(input_a()^11111);
}
}
10)
void main()
{
output_b(input_a());
sleep();
}
Elemental_03.asm: Por el Puerto B se obtiene el dato introducido por el Puerto A , pero los bits pares de salida se fijan siempre a “1”. El orden de los bits será “b7 b6 b5 b4 b3 b2 b1 b0” , siendo los pares el b6 , b4, b2 , y b0. Por ejemplo , si el Puerto A se introduce el dato ‘---01100’, por el Puerto B se visualiza ‘ ---11101’. Observa que:
-Los bits pares están a “1”, efectivamente (Puerto B)= ‘---1x1x1’
-Los impares permanecen con el datos con el dato del puerto de entrada , efectivamente: (Puerto A) = ‘---x1x0x’ y (Puerto B) = ‘---x1x0x’
Main
;====================================================================
; A partir de aqui se escribe el pgm principal
; A partir de aquí incluí tu código
; El código que sigue es un ejemplo de configuración de puertos
; Configuro los puertos I/O
BANK1
movlw b'11111'
movwf TRISA ;todo el PORTA como entrada
movlw b'00000000'
movwf TRISB
BANK0
;====================================================================
; Programa principal
;====================================================================
ABC
movf PORTA,W
movwf PORTB
bsf PORTB,8
bsf PORTB,6
bsf PORTB,4
bsf PORTB,2
goto ABC
;====================================================================
Elemental_04.asm: Por el Puerto B se obtiene el contenido del Puerto A , pero los bits impares de salida se fijan a “0”. El orden de los bits será “b7 b6 b5 b4 b3 b2 b1 b0”, siendo los impares el b7, b5 , b3 , b1. Por ejemplo , si por el puerto B se introduce el dato b’---01100’ , por el Puerto B se visualiza ‘00000100’. Observar que:
- Los bits impares están en “ 0 “ , efectivamente (Puerto B) = ‘0x0x0x0x’
- -Los pares permanecen con el dato del puerto de entrada , efectivamente : (Puerto A) = ‘---0x1x0’ y (Puerto B) = ‘ –0x1x0’
4)Main
;====================================================================
; A partir de aqui se escribe el pgm principal
; A partir de aquí incluí tu código
; El código que sigue es un ejemplo de configuración de puertos
; Configuro los puertos I/O
BANK1
movlw b'11111'
movwf TRISA ;todo el PORTA como entrada
movlw b'00000000'
movwf TRISB ;todo el PORTB como salida
BANK0
;====================================================================
; Programa principal
;====================================================================
Loop
movf PORTA,W
movlw PORTB
bcf PORTB,7
bcf PORTB,5
bcf PORTB,3
bcf PORTB,1
goto Loop
;====================================================================
Elemental_05.asm: Por el Puerto B se obtiene el dato del Puerto A invertidos los unos y los ceros. Por ejemplo , si por el Puerto A se introduce ‘---11001’, por el Puerto B aparecerá ‘xxx00110’. (No importa el estado de los tres bits superiores del Puerto B)
5)Main
;====================================================================
; A partir de aqui se escribe el pgm principal
; A partir de aquí incluí tu código
; El código que sigue es un ejemplo de configuración de puertos
; Configuro los puertos I/O
BANK1
movlw b'11111'
movwf TRISA ;todo el PORTA como entrada
movlw b'00000000'
movwf TRISB
BANK0
;====================================================================
; Programa principal
;====================================================================
ABC
movf PORTA,W
xorlw 11111
movwf PORTB
goto ABC
;====================================================================
Elemental_06.asm: Por el Puerto B se obtiene el dato del Puerto A intercambiado los nibbles alto y bajo. Por ejemplo , si por el Puerto A se introduce ‘---1001’, por el Puerto B apare ‘1001xxx1’.
6)Main
;====================================================================
; A partir de aqui se escribe el pgm principal
; A partir de aquí incluí tu código
; El código que sigue es un ejemplo de configuración de puertos
; Configuro los puertos I/O
BANK1
movlw b'11111'
movwf TRISA ;todo el PORTA como entrada
movlw b'00000000'
movwf TRISB ;todo el PORTB como salida
BANK0
;====================================================================
; Programa principal
;====================================================================
Loop
movf PORTA,W
swapf W,PORTB
goto Loop
;====================================================================
Elemental_07.asm: Por el Puerto B se obtiene el dato del Puerto A despazando un bit hacia la izquierda , por la derecha entrará un “1”. Por ejemplo , si por el Puerto A se introduce “---11001”, por el Puerto B aparecerá “xx110011”
7)Main
;====================================================================
; A partir de aqui se escribe el pgm principal
; A partir de aquí incluí tu código
; El código que sigue es un ejemplo de configuración de puertos
; Configuro los puertos I/O
BANK1
movlw b'11111'
movwf TRISA ;todo el PORTA como entrada
movlw b'00000000'
movwf TRISB
BANK0
;====================================================================
; Programa principal
;====================================================================
ABC
rlf PORTA,W
addlw .1
movwf PORTB
goto ABC
;====================================================================
Elemental_08.asm: Por el Puerto B se obtiene el dato del Puerto A despazando un bit hacia la derecha , por la izquierda entrará un “1”. Por ejemplo , si por el Puerto A se introduce “---11001”, por el Puerto B aparecerá “0xxx1100’
8)Main
;====================================================================
; A partir de aqui se escribe el pgm principal
; A partir de aquí incluí tu código
; El código que sigue es un ejemplo de configuración de puertos
; Configuro los puertos I/O
BANK1
movlw b'11111'
movwf TRISA ;todo el PORTA como entrada
movlw b'00000000'
movwf TRISB
BANK0
;====================================================================
; Programa principal
;====================================================================
ABC
rrf PORTA,W
bcf W,7
movwf PORTB
goto ABC
;====================================================================
Elemental_09.asm: Por el Puerto B se saca el dato del Puerto A invirtiendo los bits pares . Los impares se dejan como entrada.
Main
;====================================================================
; A partir de aqui se escribe el pgm principal
; A partir de aquí incluí tu código
; El código que sigue es un ejemplo de configuración de puertos
; Configuro los puertos I/O
BANK1
movlw b'11111'
movwf TRISA ;todo el PORTA como entrada
movlw b'00000000'
movwf TRISB
BANK0
;====================================================================
; Programa principal
;====================================================================
ABC
movf PORTA,W
xorlw b'01010101'
movwf PORTB
goto ABC
;====================================================================
Elemental_10.asm: Por el Puerto B se obtiene el dato de las cinco líneas del Puerto A al que esta conectado un array de interruptores. Esta operación se realizará una única vez . Despues del programa entrara en modo Standby o de bajo consumo el cual no podrá salir
10)
Main
;====================================================================
; A partir de aqui se escribe el pgm principal
; A partir de aquí incluí tu código
; El código que sigue es un ejemplo de configuración de puertos
; Configuro los puertos I/O
BANK1
movlw b'11111'
movwf TRISA ;todo el PORTA como entrada
movlw b'00000000'
movwf TRISB ;todo el PORTB como salida
BANK0
;====================================================================
; Programa principal
;====================================================================
movf PORTA,W
movwf PORTB
sleep
;====================================================================
En C:
1)
void main(){
while(1){
output_b(input_a()+55);
}
}
2)
void main()
{
while(1){
output_b(input_a()*2);
}
}
3)
void main()
{
while(1){
output_b(input_a()|0b10101);
}
}
4)
void main()
{
while(1){
output_b(input_a()&0b10101);
}
}
5)
void main()
{
while(1){
output_b(input_a()^01010101);
}
}
6)
void main()
{
while(1){
swap(input_a());
output_b(input_a());
}
}
7)
void main()
{
while(1){
rotate_left(input_a(), 1);
bit_set(input_a(),0);
output_b(input_a());
}
}
8)
void main()
{
while(1){
rotate_right(input_a(), 1);
output_low(input_a(),7);
output_b(input_a());
}
}
9)
void main()
{
while(1){
output_b(input_a()^11111);
}
}
10)
void main()
{
output_b(input_a());
sleep();
}
No hay comentarios:
Publicar un comentario