Please see the image below: You can use any simulation tool, but EASy68K is pref
ID: 645771 • Letter: P
Question
Please see the image below:
You can use any simulation tool, but EASy68K is preferred.
http://www.easy68k.com/
Thank you!
Q2. Write a 68000 assembly program to display the text HELLOTOM in a bilking form on the EASy68K 7 segment display screen. There should be two bilking speeds. If button 0 is inactive, HELLOTOM text blinks slowly, otherwise it blinks fast. EASy68K Hardware Blinking text is Address 0O E0000 Address displayed here Fast blinking ress 00 E00012 Addres 00 E00014 blinking Interrupt 7 6 5 4 3 2 1 Auto Interval Reset 00001000 IRQ Automatic Disabled Memory Map Sta nd ROM: 00000000 0000000 Read: oo000000 00000000 Protected: 0o000000 oo00000o Invalid: 00000000 00000000 Writes are ignored Bus error on write Supervisor access Bus error on accessExplanation / Answer
; put data in RAM MOV 30H, #'A' MOV 31H, #'B' MOV 32H, #'C' MOV 33H, #0 ; end of data marker ; initialise the display ; see instruction set for details CLR P1.3 ; clear RS - indicates that instructions are being sent to the module ; function set CLR P1.7 ; | CLR P1.6 ; | SETB P1.5 ; | CLR P1.4 ; | high nibble set SETB P1.2 ; | CLR P1.2 ; | negative edge on E CALL delay ; wait for BF to clear ; function set sent for first time - tells module to go into 4-bit mode ; Why is function set high nibble sent twice? See 4-bit operation on pages 39 and 42 of HD44780.pdf. SETB P1.2 ; | CLR P1.2 ; | negative edge on E ; same function set high nibble sent a second time SETB P1.7 ; low nibble set (only P1.7 needed to be changed) SETB P1.2 ; | CLR P1.2 ; | negative edge on E ; function set low nibble sent CALL delay ; wait for BF to clear ; entry mode set ; set to increment with no shift CLR P1.7 ; | CLR P1.6 ; | CLR P1.5 ; | CLR P1.4 ; | high nibble set SETB P1.2 ; | CLR P1.2 ; | negative edge on E SETB P1.6 ; | SETB P1.5 ; |low nibble set SETB P1.2 ; | CLR P1.2 ; | negative edge on E CALL delay ; wait for BF to clear ; display on/off control ; the display is turned on, the cursor is turned on and blinking is turned on CLR P1.7 ; | CLR P1.6 ; | CLR P1.5 ; | CLR P1.4 ; | high nibble set SETB P1.2 ; | CLR P1.2 ; | negative edge on E SETB P1.7 ; | SETB P1.6 ; | SETB P1.5 ; | SETB P1.4 ; | low nibble set SETB P1.2 ; | CLR P1.2 ; | negative edge on E CALL delay ; wait for BF to clear ; send data SETB P1.3 ; clear RS - indicates that data is being sent to module MOV R1, #30H ; data to be sent to LCD is stored in 8051 RAM, starting at location 30H loop: MOV A, @R1 ; move data pointed to by R1 to A JZ finish ; if A is 0, then end of data has been reached - jump out of loop CALL sendCharacter ; send data in A to LCD module INC R1 ; point to next piece of data JMP loop ; repeat finish: JMP $ sendCharacter: MOV C, ACC.7 ; | MOV P1.7, C ; | MOV C, ACC.6 ; | MOV P1.6, C ; | MOV C, ACC.5 ; | MOV P1.5, C ; | MOV C, ACC.4 ; | MOV P1.4, C ; | high nibble set SETB P1.2 ; | CLR P1.2 ; | negative edge on E MOV C, ACC.3 ; | MOV P1.7, C ; | MOV C, ACC.2 ; | MOV P1.6, C ; | MOV C, ACC.1 ; | MOV P1.5, C ; | MOV C, ACC.0 ; | MOV P1.4, C ; | low nibble set SETB P1.2 ; | CLR P1.2 ; | negative edge on E CALL delay ; wait for BF to clear delay: MOV R0, #50 DJNZ R0, $ RET
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.