rjmp rcall ret reti ijmp icall push pop ZH ZL HIGH (RAMEND) LOW (RAMEND) RAMEND SPH SPL AT90S4433 .include "4433def.inc" ldi r16, RAMEND out SP, r16 Atmega8: .include "m8def.inc" ldi r16, HIGH (RAMEND) out SPH, r16 ldi r16, LOW (RAMEND) out SPL, r16 256 RAM - Attiny 90S4433 HD44780 KS0070 KS0066U SED1278 TC1602E ANAG VISION AV1623-YFTY pollin 120420 pollin 121714 PORTD DDRD DB7 .. DB0 ldi r16, 0xff out DDRD, r16 VCC, VDD, VEE, VSS, VPP VCC: Voltage, Current, Collector VSS: GND - Pin 1 - eckig 1. Pin: VSS 2. Pin: VDD 3. Pin: VEE 4. Pin: RS 5. Pin: RW 6. Pin: E 7. bis 14. Pin: DB0 .. DB7 15. Pin: A 16. Pin: K 1. Pin: VSS: GND 2. Pin: VDD: +5V - VCC - Versorgungsspannung 3. Pin: VEE: -5V/0V - 5V: Kontrastspannung 4. Pin: RS: Register Select 5. Pin: RW: Read/Write 6. Pin: E: Enable/Disable 7. bis 14. Pin: DB0 .. DB7 15. Pin: A 16. Pin: K 4. Pin: RS: Register Select 0 = Befehl 1 = Daten 5. Pin: RW: Read/write 0 = Write 1 = Read 4-Modus 8-Modus Im Vier Bit DB7 .. DB4 sind verbunden Bei der "Ubertragung 1.) H"ohere Vier Bit 2.) Niederwertiges Nibble DB7: PD3 DB6: PD2 DB5: PD1 DB4: PD0 $3, $3, $3 $3, $3, $3, $2 $3, $3, $3, $2, $20 Im Vier Bit Modus swap r16 aus 0b01010010 wird 0b00100101 Vier Bit Modus ldi r17, r16 swap r16 andi r16, 0b00001111 out PORTD, r16 andi r17, 0b00001111 out PORTD, r16 Warten, mit Enable sbr PORTD, 5 nop nop nop cbr PORTD, 5 Befehle 1.) Clear Display 2.) Cursor Home 3.) Entry Mode 4.) On/Off Controll 5.) Cursor/Scrollen 6.) Konfiguration 7.) Charakter RAM Address Set 8.) Display RAM Address Set 0b0000 0001 - Clear Display 0b0000 001x - Cursor Home 0b0000 01is - Entry Mode 0b0000 1dcb - On/Off Controll 0b0001 srxx - Cursor/Scrollen 0b.... 0b01aa aaaa - Character RAM Address Set 0b1aaa aaaa - Display RAM Address Set UBRR UBRRL, UBRRH UDR UCSRA, UCSRB, UCSRC TXEN TXE UCS..0 und 1 USEL oder so UART - Asynchronous Reciever/Transmitter MAX232 - Pegelwandler R1IN R2IN T1IN T2IN R1OUT R2OUT T1OUT T2OUT Baud-Rate: 1 Zeichen Pro Sekunde = 1 Baud Jean Maurice Emile Baudot Baudot Code - urspr"unglicher synchroner 5 Bit - Digitaler Code - CCITT-1 TxD, RxD RTS, CTS DSR, Terminal = PC = Datenendger"at Modem = Daten"ubertragungsger"at NUL SOH - Start of Heading STX - Start of Text ETX - End of Text EOT - End of Transmission ETB - End of Transmission Block ACK - Acknowledge NAK - Negative Acknowlege VT - Vertical Tab HT - Horizontal Tab LF - Line Feed FF - Form Feed CR - Carriage Return DEL - Delete CAN - Cancel SO - Shift Out SI - shift In DC1, ..., DC4: Device Controll Strg-Q, Strg-S ACK/NAK-Protokoll X-ON/X-OFF Protokoll Problem: Asynchron, kein Takt - Data Flow Controll 1.) Protokoll 2.) Hardware 3.) Software brid, brie brcc, brcs brhs, brhc brbs, brbc brvs, brvc brts, brtc breq, brne brlt, brge brmi, brpl brsh, br ... X, Y, Z -X, X, X+ -Y, Y, Y+ -Z, Z, Y+ ld, ldd, ldi, lds st, std, sts lpm spm ld r0, -X ld r0, X ld r0, X+ ld r0, -Y ld r0, Y ld r0, Y+ ld r0, -Z ld r0, Z ld r0, Z+ st -X, r0 st X, r0 st X+, r0 st -Y, r0 st Y, r0 st Y+, r0 st -Z, r0 st Z, r0 st Z+, r0 ldd r0, Y+k ldd r0, Z+k std Y+k, r0 std Z+k, r0 add adc adiw sub sbc sbiw subi sbci add Add two registers adc Add with carry two registers adiw Add immidiate to Word sub Subtract two registers sbc Subtract with carry two registers sbiw Subtract immediate from word subi Subtract constant from register sbci Subtract with carry constant from register Minix - gleich lernen, was ich weiss: NR_REGS NR_SEGS NR_HOLES NR_PROCS NR_TASKS struct mem_map { vir_clicks mem_vir; phys_clicks mem_phys; vir_clicks mem_len; }; vir, phys, len mem_map, ... EXTERN struct proc { int p_reg [N_REGS]; } proc [NR_TASKS + NR_PROCS]; PRIVATE struct hole { phys_clicks h_base; phys_clicks h_len; struct hole *h_next; }; vir, phys, bytes, clicks vir_bytes vir_clicks phys_bytes phys_clicks h/const.h h/com.h h/callnr.h h/sgtty.h h/stat.h h/signal.h h/type.h h/error.h h, kernel, mm, fs kernel/...h kernel/main.c kernel/proc.c kernel/system.c kernel/mpx88.s kernel/klib88.s kernel/clock.c kernel/memory.c kernel/tty.c kernel/floppy.c kernel... winni oder disk kernel/main.c main () unexpected_int () trap () div_trap () set_vec () panic () kernel/mpx88.s _MINIX: _s_call: _wini_int: _clock_init _tty/floppy... _trp: _divide: _suprise: _save: _restart: _idle: _data: kernel/floppy: tty_task () do_rdwt () start_motor () stop_motor () clock_mess () send_mess () seek () transfer () recalibrate () reset () fdc_results () fdc_out () kernel/tty.c tty_task () do_read do_write do_ioctl do_cancel do_charint keyboard console set_6845 beep escape flush scroll_screen char_in ? char_out ? |