Gépözeli programozás PIC Mirovezérlő Mirovezérlő, miroprocesszoro Miroprocesszor Programvezérlő és adatfeldolgozó funció Teljes örű memória ezelő. Külső memória Processzorbusz felület, 6364 bit Nincs, vagy processzororientált belső perifériá Védett, Normál, Felügyelő, User módo PIC mirovezérlő Mirovezérlő Teljes család:! PIC c5xxx 8 lábú, minimális iépítés! PIC 6c5xxx 88 lábú alap omplexitás! PIC 6c6xxx! PIC 6c7xxx 840 lábú özepes felszereltség! PIC 6c8xxx! PIC 7c4xxx 4044 lábú felső szintű! PIC 7c5xxx Programvezérlő és adatfeldolgozó funció Belső vagy ülső memória, limitált méret és funció Porto, bitenénti onfigurációs lehetőség So, és soféle periféria, öztü so egzotius eszöz. (időzítő, A/D D/A onverter, PWM, nagyáramú imenete, stb.) Egyszerű programvégrehajtás, legfeljebb megszaításo Közepes omplexitású eleme (6xx,7xx,8xx sorozat) Általános jellemző! Nagy teljesítményű RISC CPU DC 0MHz órajel! Belső programtár, mérete 0,54 utasítás! 35 egyszavas 4 bites utasítás Kód OP cím vagy adat! 8 bites adatstrutúra! 369 nyolc bites regiszter + ALU regiszter (W)! 8 szintű hardver stac, D/I/R címzés, interrupt strutúra! Gazdag perifériaelem észlet: időzítő, ommunniációs interfész, A/D onverter, PWM, stb.! Speciális mirovezérlő funció (Beapcsolási RESET, WDT, is fogyasztású észenléti állapot, soros ISP (In Circuit Programing)
Számítógépes rendszere 7 Általános felépítés EPROM Programing Memory 8 level Stac A Program Counter Instr. Reg RAM Register Ban B Adr MUX C Decoder FSR MCLR State Ctrl Pwr Up Pwr Tim WDT Osc Tim ALU Operand Status D E OSC Timing W reg. EEPROM Jellemző:! Harvard architetúra (nem Neumann). Szeparált program és adatmemória:! 4 bit utasítás! 8 bit adat Egymástól független hozzáférés! Minden regiszter (RAM file + perifériá + speciális funció) egyetlen adatmemória területen van! Ortogonális utasításészlet (minden regiszterre ugyanaz végezhető)! Program utasítás = utasítás cilus = Fetch + Execute = 4 órajel (Q..Q4).! Pipeline feldolgozás: az utasítás feldolgozása alatt a övetező utasítás felhozása történi. Így minden utasítás egy utasításcilus alatt végrehajtható, ivéve a feltételes és feltétel nélüli ugró utasításoat. Azo ét utasításcilust igényelne. Pl.:
Számítógépes rendszere 73. MOVLW 55H Fetch Ex. MOVWF PORTB Fetch Ex 3. CALL SUB Fetch3 Ex3 3. BSF PORTA,BIT3 Fetch4 Ex4 Memória szervezés Programmemória: ONCHIP: EPROM, OTP (One Time Programing), EEPROM, FLASH PIC 6C84, PIC 6F84 Eletromosan törölhető EEPROM ill. FLASH Utasítás PC: 3 bittel 8 címezhető meg. Ebből általában 0,5...4 van fiziailag megvalósítva. Címzésor a 3 bit ét ülön regiszterből áll elő. Az egyi az utasításszámláló, a mási a (özönséges regiszterént is elérhető) PCLatch: REG:0AH : PCLatch REG:0H : PCL PC Latch: 5bit PCL: 8 bit PC Latch: 5bit Au eredménye számított címmódosításnál bit bit: OPCODE ugrási hely JMP, CALL utasításnál. Memóriaelrendezés: RESET vetor 0H Interrupt vetor 4H... Felhasználói programmemória... Fileregiszter ban FFH, 3FFH, 7FFH, FFFH memória vége A regisztereet egy özös memóriatartományban tároljá: a regiszter banben. Ez 7 (plusz az inidret címzés álregisztere) regiszteres lapoból áll. (7 biten címzün a lapon belül), a lapoat ülön (általános regiszterben lévő) biteel lehet váltani. A...FH illetve 80H 9FH tartományban vanna a speciális regisztere: PC, INDR, STATUS, FSR, INTCON, PORTA, PORTB, PORTC, PORTD, TRISA, TRISB, TRISC,
Számítógépes rendszere 74 TRISD, TMR0, TMR, TMR, stb. A többi regiszter (amennyi meg van valósítva) szabadon használható. Programozás Ld. az A melléletet Instruction Set Summary Regiszter címzés So regiszter mindét lapon elérhető. Ilyen például a lapo özötti váltáshoz szüséges STATUS regiszter Közvetlen: A 9 bites regisztercím ét részből áll: BIT8..7: RP..RP0 lapcím, a STATUS regiszter 5. bitje BIT6..0: 7 bites regisztercím a 4 bites utasításódból Indiret: Az INDR (pseudo) regiszteren eresztül és az FSR File Select Register segítségével történi. Az FSRben előészített című regiszter az INDR regiszterben látszi, ott írható, olvasható. Pl.: A CLRF INDR törölni fogja azt a regisztert, amine a címe az FSRben van. Az utasításo ódolása 4 bites, egyszavas utasításo. RISC jelleg, b. 35 utasítás.. Regiszteres művelete OPCODE: 6 bit D: bit Reg. Cím: 7 bit A D bit azt adja meg, hogy az eredmény a művelet elvégzése után hol eletezzen:! D = 0 esetén a W aumulátorban! D = esetén a címzett fájlregiszterben.. Bitművelete OPCODE: 4 bit Bit cím: 3 bit Reg. Cím: 7 bit A megadott fájlregiszter megnevezett bitjével történi a művelet. 3. Közvetlen adat utasításból OPCODE: 6 bit Adat: 8 bit 4. Vezérlő utasításo Két lehetőség van: egyszavas, paraméter nélüli utasításo (Pl. CLRWDT, NOP) OPCODE: 4 bit 5. Ugró utasításo: (pl. JMP, CALL) OPCODE PC:3 bit Cím: bit Utasításo (F=File regisztertömb, azaz 7 bitnyi regiszter cím. W=Aumulátor)
Számítógépes rendszere 75 Logiai ANDWF (ÉS apcsolat W és egy F özött), IORWF (özönséges VAGY), XORWF (izáró VAGY), COMF Regiszterművelete: CLRF( Egy F nullázása), CLRW( W nullázása), RLF( Eltolás Carryn át), RRF, SWAPF Adatmozgatás: MOVF (Fből Wbe), MOVWF (Wből Fbe) Feltételes: Bitművelete: Feltételes: Aritmetia: Logia: Töltés: DECFS( F csöentése és a övetező utasítás átlépése, ha nulla), INCFS BCF (Bit törlés egy Fben), BSF (Bit beírás egy Fben) BTFSC (Bitvizsgálat: a övetező utasítás átlépése, ha a bit nulla.), BTFSS ADDWF, SUBWF, ADDLW (onstans és W összeadása), SUBLW ANDLW, IORLW, XPRLW MOVLW (onstans betöltése Wbe), RETLW (visszatérés szubrutinból, Wbe a megadott onstans erül.) Programvezérlés: CALL, GOTO, RETURN, RETFIE (Visszatérés megszaításból), NOP Állapot vezérlés: CLRWDT (Watch Dog Timer törlése), SLEEP (Átlépés alvó módba) STATUS regiszter (8 bit) PRP RP RP0 TO PD DC C 0. C: Carry. D: Digit Carry. : ero 3. 4. PD: Power Down TO: Time Out. Hardware állapot jelző. 5. 6. RP0,RP Regiszter ban váltó bite. 7. PRP Regiszter lapcím indiret címzésnél. Belső perifériá Timer modul Timer 0: 8 bites + programozható előosztó...56 arányban. EXT/INT órajel, megszaítás túlcsordulásor. Timer : 6 bites, időzítő vagy számláló EXT/INT órajelről. Timer : 8 bites, előosztó + utóosztó + periódus regiszter Capture/Compare Timer értéét:! Mintavételezi, Capture ha RC változi! Ellenőrzi, Compare és RCt beállítja PWM mode Timer vel Impulzusszélesség moduláció valósítható meg.
Számítógépes rendszere 76 Soros ommuniációs interfész I C mode (Inter Integrated Circuit. nyitott olletoros vezetéen megvalósított szinron soros busz. SDAadatvezeté, SCLórajel) Serial Peripherial Interface Syncron master/slave 3 vezetéen (SDI, SDO, SCL) + Slave Selection. Asyncron USART funció full duplex, baudrate generátorral. A/D onverter 8 bites onverter, típusonént eltérő számú bemenettel. (48). Külső vagy belső referencia (5V,GND) vagy RA3 Sebessége b. 40 µs/onverzió. Megszaítás érés a onverzió végén. Analóg Komparátor Input (0...5V) Referenciafeszültség EXT/INT (Programozható szintű) Porto Elsődleges funció: általános célú digitális inputoutput. Másodlagos funció: speciális perifériaegység vezérlő ibemenete. Ha nem használju, aor általános port marad a vonal. Általános célú I/O port A övetező ábra az I/O port alapfelépítését mutatja. A tényleges porto ettől típusonént eltérhetne.
Számítógépes rendszere 77 Adatbusz WR PORT Portlatch D Q I/O Láb WR TRIS D Q Trislatch RD TRIS Q D RD PORT Tulajdonságo:! A WR/RD regisztere a normál címtartományban vanna. (Pl.: PORTA, TRISB)! WRRD nem ugyanarra vonatozi. Írásor a PORT Latchbe írun, olvasásor a láb állapotát olvassu. Ha a port imenet, aor a ettő megegyezi, egyébént nem biztos.! A bitművelete mind READMODIFYWRITE jellegűe. (BCF,BSF) előbb olvassa a teljes 8 bitet, azután elvégzi valamelyi bit módosítását, majd a teljes 8 bitet visszaírja. Melléhatás lehetséges. Pl.: 4 db I/O port pin: PORTB 7654 Alapállapot 0 Jelenlegi onfiguráció IOIO A Bemenete állapota.0. Ha a 6. Bitet töröljü, aor BCF PORTB,7 után: Read port: CLRB bit6: 0 Write port: 0 A bit nullázódott.! Write a cilus végén, Read a cilus elején jut érvényre.
Számítógépes rendszere 78 PORT A Analóg input. 8 bit, A/D onverterre megy. TIM0 external input is egyben, ez Schmitttriggerelt. PORTB Belső felhúzó ellenállással rendelezi. Eze atív ibe apcsolható eleme, nagyjából µa áramot épese leadni. A port 4...7 bitje megszaítást tud iváltani, amior megváltozi az állapota (ha inputna van onfigurálva). PORTC TIM órajel bemenete. Itt érhető el a Compare/Capture/PWM modul. Serial Communication Interface (AsyncSync) vonala, I C busz. PORTD 8 bites miroprocesszor port. (Párhuzamos Slave port) PORTE A PORTDhez tartozó vezérlőjele. (RD,WR,CS) A Host port egy 8 bites párhuzamos vonal, amit a RD, WR, CS jellel lehet egy mási számítógép buszrendszerére telepíteni. A D port ötődi a mási gép adatbuszára, a CS jel a iválasztójel (mint egy perifériánál), s a RD WR jel mondja meg az adatátvitel irányát. A D port ilyenor csa abban az esetben imenet, ha a CS és a RD jel egyszerre atív, és aor tölti be a vonala állapotát a belső tárolóba amior a WR és a CS egyszerre atív. Mindét esetben megszaításérés is történi a PICben. Oszcillátor Programozásor onfigurálható az üzemmódja.! RC oszcillátor! Kristály LP mód 3HzHz! Kristály XT mód Hz4MHz! Kristály HS mód 4MHz0MHz Reset PowerOn RESET PowerUp RESET Oscillator Startup Timer MCLR normál műödésnél RESET CLRT Sleep módban (Ébresztés) Beapcsolási feltétele. WDT normál műödésnél (Ha nem nullázzá és engedélyezve van, aor resetel) WDT Sleep módban. SLEEP = Power Down Mode Ilyenor az áramfelfétel,5 µa szintre csöen a normál módban mérhető (frevenciafüggő) pár száz µaről.
Számítógépes rendszere 79 A imenete stabil logiai szinten vanna, a bemenete szintén. Ébresztés:! Külső RESET (MCLR jel)! WDT timeout! Megszaítás:! Külső INT! PORTB 4...7 változás! Timer async mode! Soros STARTSTOP bit! Slave port RD/WR Programozás Soros vonalon át. A soros vonal az RB6 (mint CLK) és az RB7 (mint Data I/O) segítségével történi. Ezalatt az idő alatt az MCLR vonalra Vpp feszültséget ell adni. (ami +V..3V özött van, típustól függően) Programfejlesztés PIC assembler + Simulator + Loader Microchip MPLAB, MPLABC fordító Emulátoro.
PIC6C7X 5.0 INSTRUCTION SET SUMMARY Each PIC6CXX instruction is a 4bit word divided into an OPCODE which specifies the instruction type and one or more operands which further specify the operation of the instruction. The PIC6CXX instruction set summary in Table 5 lists byteoriented, bitoriented, and literal and control operations. Table 5 shows the opcode field descriptions. For byteoriented instructions, 'f' represents a file register designator and 'd' represents a destination designator. The file register designator specifies which file register is to be used by the instruction. The destination designator specifies where the result of the operation is to be placed. If 'd' is zero, the result is placed in the W register. If 'd' is one, the result is placed in the file register specified in the instruction. For bitoriented instructions, 'b' represents a bit field designator which selects the number of the bit affected by the operation, while 'f' represents the number of the file in which the bit is located. For literal and control operations, '' represents an eight or eleven bit constant or literal value. TABLE 5: OPCODE FIELD DESCRIPTIONS Field Description f Register file address (0x to 0x7F) W Woring register (accumulator) b Bit address within an 8bit file register Literal field, constant data or label x Don't care location (= 0 or ) The assembler will generate code with x = 0. It is the recommended form of use for compatibility with all Microchip software tools. d Destination select; d = 0: store result in W, d = : store result in file register f. Default is d = label Label name TOS Top of Stac PC Program Counter PCLATH Program Counter High Latch GIE Global Interrupt Enable bit WDT Watchdog Timer/Counter TO Timeout bit PD Powerdown bit dest Destination either the W register or the specified register file location [ ] Options ( ) Contents Assigned to < > Register bit field In the set of italics User defined term (font is courier) The instruction set is highly orthogonal and is grouped into three basic categories: Byteoriented operations Bitoriented operations Literal and control operations All instructions are executed within one single instruction cycle, unless a conditional test is true or the program counter is changed as a result of an instruction. In this case, the execution taes two instruction cycles with the second cycle executed as a NOP. One instruction cycle consists of four oscillator periods. Thus, for an oscillator frequency of 4 MHz, the normal instruction execution time is µs. If a conditional test is true or the program counter is changed as a result of an instruction, the instruction execution time is µs. Table 5 lists the instructions recognized by the MPASM assembler. Figure 5 shows the general formats that the instructions can have. Note: To maintain upward compatibility with future PIC6CXX products, do not use the OPTION and TRIS instructions. All examples use the following format to represent a hexadecimal number: 0xhh where h signifies a hexadecimal digit. FIGURE 5: GENERAL FORMAT FOR INSTRUCTIONS Byteoriented file register operations 3 8 7 6 0 OPCODE d f (FILE #) d = 0 for destination W d = for destination f f = 7bit file register address Bitoriented file register operations 3 0 9 7 6 0 OPCODE b (BIT #) f (FILE #) b = 3bit bit address f = 7bit file register address Literal and control operations General 3 8 7 0 OPCODE (literal) = 8bit immediate value CALL and GOTO instructions only 3 0 0 OPCODE (literal) = bit immediate value 997 Microchip Technology Inc. A. mellélet
PIC6C7X TABLE 5: Mnemonic, Operands PIC6CXX INSTRUCTION SET Description Cycles 4Bit Opcode Status MSb LSb Affected Notes BYTEORIENTED FILE REGISTER OPERATIONS ADDWF ANDWF CLRF CLRW COMF DECF DECFS INCF INCFS IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF f f Add W and f AND W with f Clear f Clear W Complement f Decrement f Decrement f, Sip if 0 Increment f Increment f, Sip if 0 Inclusive OR W with f Move f Move W to f No Operation Rotate Left f through Carry Rotate Right f through Carry Subtract W from f Swap nibbles in f Exclusive OR W with f BITORIENTED FILE REGISTER OPERATIONS BCF BSF BTFSC BTFSS f, b f, b f, b f, b Bit Clear f Bit Set f Bit Test f, Sip if Clear Bit Test f, Sip if Set LITERAL AND CONTROL OPERATIONS ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE RETLW RETURN SLEEP SUBLW XORLW Add literal and W AND literal with W Call subroutine Clear Watchdog Timer Go to address Inclusive OR literal with W Move literal to W Return from interrupt Return with literal in W Return from Subroutine Go into standby mode Subtract W from literal Exclusive OR literal with W () () () () 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 bb 0bb 0bb bb x 0 0 xx 0xx 0x lfff 0xxx lfff 0xx0 bfff bfff bfff bfff xxxx 0 0 C,DC, C C C,DC, C,DC, TO,PD TO,PD C,DC, Note : When an I/O register is modified as a function of itself ( e.g., MOVF PORTB, ), the value used will be that value present on the pins themselves. For example, if the data latch is '' for a pin configured as input and is driven low by an external device, the data will be written bac with a '0'. : If this instruction is executed on the TMR0 register (and, where applicable, d = ), the prescaler will be cleared if assigned to the Timer0 Module. 3: If Program Counter (PC) is modified or a conditional test is true, the instruction requires two cycles. The second cycle is executed as a NOP.,,,,,,3,,,3,,,,,,,,, 3 3 997 Microchip Technology Inc. A. mellélet