371
BASCOM BASIC AVR Wersja 1.11.7.3 Opracowano na podstawie oryginalnego pliku pomocy programu BASCOM-A VR (wersja 1.11.7.3). Niektóre rysunki pochodz ą  z oryginalnego pliku pomocy oraz not katalogowych firmy Atmel. Wszystkie nazwy własne zostały użyte wyłą cznie w celu identyfikacji. Text based on the original BASCOM-AVR help file (version 1.11.7.3). Some embedded pictures come from MCS Help and Atmel’s datasheets.  All brand names used for identification only. Copyright by Zbigniew Gibek. Poland 2002-2003. Original English help file is copyrighted by MCS Electronics. All rights reserved. Visit MCS Electronic Website: www.mcselec.com for more info about BASCOM.

Bascom Basic Avr 3

  • Upload
    cjarek

  • View
    605

  • Download
    0

Embed Size (px)

Citation preview

  • BASCOM BASIC AVRWersja 1.11.7.3

    Opracowano na podstawie oryginalnego pliku pomocy programu BASCOM-AVR (wersja 1.11.7.3).Niektre rysunki pochodz z oryginalnego pliku pomocy oraz not katalogowych firmy Atmel.

    Wszystkie nazwy wasne zostay uyte wycznie w celu identyfikacji.

    Text based on the original BASCOM-AVR help file (version 1.11.7.3).Some embedded pictures come from MCS Help and Atmels datasheets.

    All brand names used for identification only.

    Copyright by Zbigniew Gibek. Poland 2002-2003.

    Original English help file is copyrighted by MCS Electronics. All rights reserved.Visit MCS Electronic Website: www.mcselec.com for more info about BASCOM.

  • BASCOM BASIC AVR Wersja 1.11.7.32

  • BASCOM BASIC AVR Wersja 1.11.7.3 3

    SPIS TRECI

    Od tumacza. ............................................................................................................................................ 11

    BASCOM AVR - Tworzenie programu ..................................................................................................... 12

    BASCOM AVR i pami. .......................................................................................................................... 13

    BASCOM AVR - Kody bdw.................................................................................................................. 15

    Urzdzenia wbudowane w struktur procesora AVR ............................................................................... 19

    Licznik-czasomierz TIMER0 ............................................................................................................... 21

    Licznik-czasomierz TIMER1 ............................................................................................................... 22

    Ukad Watchdog ................................................................................................................................. 23

    Port B ................................................................................................................................................. 24

    Port D ................................................................................................................................................. 26

    Ukad transmisji szeregowej UART .................................................................................................... 27

    Komparator analogowy....................................................................................................................... 30

    Urzdzenia zewntrzne

    Uywanie SPI ..................................................................................................................................... 31

    Inicjalizacja ......................................................................................................................................... 38

    Rejestry specjalne .............................................................................................................................. 39

    Alfanumeryczny wywietlacz LCD...................................................................................................... 41

    Uywanie magistrali I2C...................................................................................................................... 42

    Uywanie magistrali 1Wire .............................................................................................................. 43Topografia wyprowadze ......................................................................................................................... 47

    Podstawy jzyka BASCOM BASIC .......................................................................................................... 50

    Sowa zastrzeone ................................................................................................................................... 62

    Rnice w stosunku do BASCOM Basic 8051 ......................................................................................... 68

    Dyrektywy kompilatora

    #IF-ELSE-ENDIF................................................................................................................................ 70

    $ASM.................................................................................................................................................. 71

    $BAUD ............................................................................................................................................... 71

    $BAUD1 (Nowo w wersji 1.11.6.8)....................................................................................................... 72

    $BGF.................................................................................................................................................. 73

    $BOOT (Nowo w wersji 1.11.6.8) ........................................................................................................ 73

    $CRYSTAL......................................................................................................................................... 74

    $DATA................................................................................................................................................ 75

    $DBG (Nowo w wersji 1.11.6.8)........................................................................................................... 76

    $DEFAULT ......................................................................................................................................... 78

    $EEPLEAVE (Nowo w wersji 1.11.7.3)................................................................................................ 79

    $EEPROM.......................................................................................................................................... 79

    $EEPROMHEX (Nowo w wersji 1.11.6.8)............................................................................................ 80

    $EXTERNAL ...................................................................................................................................... 80

    $INCLUDE.......................................................................................................................................... 81

  • BASCOM BASIC AVR Wersja 1.11.7.34

    $LCD .................................................................................................................................................. 82

    $LCDRS ............................................................................................................................................. 83

    $LCDPUTCTRL.................................................................................................................................. 83

    $LCDPUTDATA ................................................................................................................................. 85

    $LCDVFO (Nowo w wersji 1.11.6.9) ................................................................................................... 86

    $LIB .................................................................................................................................................... 86

    $MAP.................................................................................................................................................. 88

    $NOINIT ............................................................................................................................................. 88

    $NORAMCLEAR ................................................................................................................................ 90

    $REGFILE .......................................................................................................................................... 91

    $ROMSTART ..................................................................................................................................... 91

    $SERIALINPUT.................................................................................................................................. 92

    $SERIALINPUT1 (Nowo w wersji 1.11.6.8) ......................................................................................... 93

    $SERIALINPUT2LCD......................................................................................................................... 95

    $SERIALOUTPUT.............................................................................................................................. 95

    $SERIALOUTPUT1 (Nowo w wersji 1.11.6.8) ..................................................................................... 96

    $SIM................................................................................................................................................... 96

    $TINY ................................................................................................................................................. 97

    $WAITSTATE..................................................................................................................................... 97

    $XRAMSIZE ....................................................................................................................................... 97

    $XRAMSTART ................................................................................................................................... 98

    Elementy jzyka

    1WIRECOUNT() ................................................................................................................................. 98

    1WRESET ........................................................................................................................................ 100

    1WREAD()........................................................................................................................................ 102

    1WSEARCHFIRST() ........................................................................................................................ 104

    1WSEARCHNEXT() ......................................................................................................................... 106

    1WVERIFY()..................................................................................................................................... 108

    1WWRITE ........................................................................................................................................ 109

    ABS()................................................................................................................................................ 111

    ACOS() (Nowo w wersji 1.11.6.8) ...................................................................................................... 112

    ALIAS ............................................................................................................................................... 112

    ASC()................................................................................................................................................ 113

    ASIN() (Nowo w wersji 1.11.6.8)........................................................................................................ 114

    ATN() (Nowo w wersji 1.11.6.8) ........................................................................................................ 114

    ATN2() (Nowo w wersji 1.11.6.8) ...................................................................................................... 115

    BAUD ............................................................................................................................................... 116

    BCD() ............................................................................................................................................... 116

    BIN() ................................................................................................................................................. 117

    BINVAL() .......................................................................................................................................... 118

    BIN2GREY()..................................................................................................................................... 118

    BITWAIT........................................................................................................................................... 119

    BYVAL, BYREF................................................................................................................................ 120

    CALL ................................................................................................................................................ 120

    CHECKSUM()................................................................................................................................... 122

  • BASCOM BASIC AVR Wersja 1.11.7.3 5

    CHR() ............................................................................................................................................... 122

    CIRCLE (Nowo w wersji 1.11.6.8) ..................................................................................................... 123

    CLS .................................................................................................................................................. 125

    CLOCKDIVISION ............................................................................................................................. 125

    CLOSE # .......................................................................................................................................... 126

    CONFIG ........................................................................................................................................... 128

    CONFIG 1WIRE ......................................................................................................................... 128

    CONFIG ACI (Nowo w wersji 1.11.6.9) ....................................................................................... 129

    CONFIG ADC ............................................................................................................................. 129

    CONFIG CLOCK ........................................................................................................................ 130

    CONFIG COM1 (Nowo w wersji 1.11.6.8).................................................................................... 132

    CONFIG COM2 (Nowo w wersji 1.11.6.8).................................................................................... 133

    CONFIG DATE (Nowo w wersji 1.11.7.3) ................................................................................... 133

    CONFIG DEBOUNCE................................................................................................................. 134

    CONFIG GRAPHLCD................................................................................................................. 135

    CONFIG I2CDELAY.................................................................................................................... 138

    CONFIG INTx ............................................................................................................................. 139

    CONFIG KBD ............................................................................................................................. 140

    CONFIG KEYBOARD................................................................................................................. 140

    CONFIG LCD.............................................................................................................................. 142

    CONFIG LCDBUS ...................................................................................................................... 142

    CONFIG LCDMODE................................................................................................................... 143

    CONFIG LCDPIN........................................................................................................................ 143

    CONFIG PORT, CONFIG PIN .................................................................................................... 144

    CONFIG RC5.............................................................................................................................. 145

    CONFIG SCL.............................................................................................................................. 146

    CONFIG SDA ............................................................................................................................. 146

    CONFIG SERIALIN..................................................................................................................... 147

    CONFIG SERIALIN1 (Nowo w wersji 1.11.6.8)............................................................................ 148

    CONFIG SERIALOUT................................................................................................................. 149

    CONFIG SERIALOUT1 (Nowo w wersji 1.11.6.8)........................................................................ 150

    CONFIG SERVOS...................................................................................................................... 152

    CONFIG SPI ............................................................................................................................... 153

    CONFIG TIMER0........................................................................................................................ 156

    CONFIG TIMER1........................................................................................................................ 158

    CONFIG TIMER2........................................................................................................................ 160

    CONFIG WAITSUART................................................................................................................ 162

    CONFIG WATCHDOG................................................................................................................ 162

    CONFIG X10 (Nowo w wersji 1.11.7.3)....................................................................................... 163

    COUNTER, CAPTURE, COMPARE i PWM ................................................................................. 163

    CONST............................................................................................................................................. 164

    COS() (Nowo w wersji 1.11.6.8) ........................................................................................................ 165

    COSH() (Nowo w wersji 1.11.6.8)...................................................................................................... 165

    CRC8() ............................................................................................................................................. 166

    CRC16() ........................................................................................................................................... 167

  • BASCOM BASIC AVR Wersja 1.11.7.36

    CRYSTAL......................................................................................................................................... 168

    CPEEK()........................................................................................................................................... 169

    CPEEKH() ........................................................................................................................................ 170

    CURSOR.......................................................................................................................................... 171

    DATA................................................................................................................................................ 171

    DATE$.............................................................................................................................................. 173

    DATE() (Nowo w wersji 1.11.7.3)...................................................................................................... 175

    DAYOFWEEK() (Nowo w wersji 1.11.7.3) ........................................................................................ 177

    DAYOFYEAR() (Nowo w wersji 1.11.7.3) ......................................................................................... 178

    DBG (Nowo w wersji 1.11.6.8).......................................................................................................... 180

    DEBOUNCE ..................................................................................................................................... 180

    DECR ............................................................................................................................................... 181

    DECLARE FUNCTION..................................................................................................................... 182

    DECLARE SUB ................................................................................................................................ 183

    DEFxxx............................................................................................................................................. 184

    DEFLCDCHAR................................................................................................................................. 184

    DEG2RAD() (Nowo w wersji 1.11.6.8)............................................................................................... 185

    DELAY.............................................................................................................................................. 185

    DIM................................................................................................................................................... 186

    DISABLE .......................................................................................................................................... 188

    DISPLAY .......................................................................................................................................... 189

    DO...LOOP ....................................................................................................................................... 189

    DTMFOUT........................................................................................................................................ 190

    ECHO............................................................................................................................................... 192

    ELSE ................................................................................................................................................ 192

    ENABLE ........................................................................................................................................... 193

    END.................................................................................................................................................. 194

    ERR.................................................................................................................................................. 194

    EXIT ................................................................................................................................................. 195

    EXP()................................................................................................................................................ 195

    FIX() (Nowo w wersji 1.11.6.8) .......................................................................................................... 196

    FORMAT()........................................................................................................................................ 196

    FOR...NEXT ..................................................................................................................................... 197

    FOURTHLINE .................................................................................................................................. 198

    FRAC() (Nowo w wersji 1.11.6.8) ...................................................................................................... 199

    FUSING() ......................................................................................................................................... 199

    FUNCTION....................................................................................................................................... 200

    GETADC() ........................................................................................................................................ 201

    GETATKBD().................................................................................................................................... 202

    GETKBD() ........................................................................................................................................ 204

    GETRC() .......................................................................................................................................... 206

    GETRC5() ........................................................................................................................................ 207

    GLCDCMD (Nowo w wersji 1.11.6.9) ............................................................................................... 209

    GLCDDATA (Nowo w wersji 1.11.6.9) .............................................................................................. 210

    GOSUB ............................................................................................................................................ 210

  • BASCOM BASIC AVR Wersja 1.11.7.3 7

    GOTO............................................................................................................................................... 211

    GREY2BIN()..................................................................................................................................... 211

    HEX()................................................................................................................................................ 212

    HEXVAL()......................................................................................................................................... 213

    HIGH() .............................................................................................................................................. 213

    HIGHW()........................................................................................................................................... 214

    HOME............................................................................................................................................... 214

    I2CINIT (Nowo w wersji 1.11.6.8) ..................................................................................................... 214

    I2CRECEIVE .................................................................................................................................... 215

    I2CSEND.......................................................................................................................................... 216

    I2START, I2CSTOP, I2CRBYTE, I2CWBYTE.................................................................................. 217

    IDLE ................................................................................................................................................. 218

    IF...THEN...ELSE...END IF............................................................................................................... 218

    INCR................................................................................................................................................. 219

    INITLCD ........................................................................................................................................... 220

    INKEY() ............................................................................................................................................ 220

    INP() ................................................................................................................................................. 221

    INPUT............................................................................................................................................... 221

    INPUTBIN......................................................................................................................................... 222

    INPUTHEX ....................................................................................................................................... 223

    INSTR() ............................................................................................................................................ 224

    INT() (Nowo w wersji 1.11.6.8) .......................................................................................................... 225

    ISCHARWAITING() (Nowo w wersji 1.11.6.9) ................................................................................... 225

    LCASE() ........................................................................................................................................... 226

    LCD .................................................................................................................................................. 227

    LCDAT (Nowo w wersji 1.11.6.9)....................................................................................................... 229

    LEFT() .............................................................................................................................................. 229

    LEN() ................................................................................................................................................ 230

    LINE (Nowo w wersji 1.11.6.8) ......................................................................................................... 230

    LOAD................................................................................................................................................ 232

    LOADADR ........................................................................................................................................ 232

    LOADLABEL() (Nowo w wersji 1.11.6.9) .......................................................................................... 233

    LOCAL.............................................................................................................................................. 233

    LOCATE........................................................................................................................................... 235

    LOG() ............................................................................................................................................... 235

    LOG10() (Nowo w wersji 1.11.6.8).................................................................................................... 235

    LOOKDOWN().................................................................................................................................. 236

    LOOKUP() ........................................................................................................................................ 237

    LOOKUPSTR()................................................................................................................................. 238

    LOW()............................................................................................................................................... 238

    LOWERLINE .................................................................................................................................... 238

    LTRIM() ............................................................................................................................................ 239

    MAKEBCD() ..................................................................................................................................... 239

    MAKEDEC() ..................................................................................................................................... 240

    MAKEINT() ....................................................................................................................................... 240

  • BASCOM BASIC AVR Wersja 1.11.7.38

    MAX() ............................................................................................................................................... 241

    MID() ................................................................................................................................................ 242

    MID................................................................................................................................................... 242

    MIN() ................................................................................................................................................ 243

    ON INTERRUPT .............................................................................................................................. 244

    ON VALUE ....................................................................................................................................... 247

    OPEN ............................................................................................................................................... 248

    OUT.................................................................................................................................................. 251

    PEEK() ............................................................................................................................................. 252

    POKE ............................................................................................................................................... 252

    POPALL ........................................................................................................................................... 253

    POWER() (Nowo w wersji 1.11.6.8).................................................................................................. 253

    POWERDOWN ................................................................................................................................ 254

    POWERSAVE .................................................................................................................................. 254

    PRINT............................................................................................................................................... 254

    PRINTBIN......................................................................................................................................... 255

    PSET................................................................................................................................................ 256

    PULSEIN .......................................................................................................................................... 258

    PULSEOUT ...................................................................................................................................... 259

    PUSHALL ......................................................................................................................................... 259

    RAD2DEG() (Nowo w wersji 1.11.6.8)............................................................................................... 259

    RC5SEND (Nowo w wersji 1.11.6.8) ................................................................................................ 260

    RC6SEND (Nowo w wersji 1.11.6.9) ................................................................................................ 261

    READ ............................................................................................................................................... 263

    READEEPROM................................................................................................................................ 264

    READMAGCARD ............................................................................................................................. 266

    REM ................................................................................................................................................. 268

    RESET ............................................................................................................................................. 268

    RESTORE ........................................................................................................................................ 269

    RETURN .......................................................................................................................................... 270

    RIGHT()............................................................................................................................................ 270

    RND() ............................................................................................................................................... 271

    ROTATE........................................................................................................................................... 271

    ROUND() (Nowo w wersji 1.11.6.8) .................................................................................................. 272

    RTRIM()............................................................................................................................................ 272

    SECELAPSED() (Nowo w wersji 1.11.7.3) ....................................................................................... 273

    SECOFDAY() (Nowo w wersji 1.11.7.3) ........................................................................................... 274

    SELECT CASE...CASE...END SELECT........................................................................................... 275

    SET .................................................................................................................................................. 276

    SETFONT (Nowo w wersji 1.11.6.9)................................................................................................. 277

    SERIN (Nowo w wersji 1.11.6.9) ...................................................................................................... 277

    SEROUT (Nowo w wersji 1.11.6.9)................................................................................................... 279

    SGN() ............................................................................................................................................... 281

    SHIFT ............................................................................................................................................... 281

    SHIFTCURSOR................................................................................................................................ 282

  • BASCOM BASIC AVR Wersja 1.11.7.3 9

    SHIFTIN ........................................................................................................................................... 282

    SHIFTOUT ....................................................................................................................................... 284

    SHIFTLCD........................................................................................................................................ 285

    SHOWPIC ........................................................................................................................................ 285

    SHOWPICE (Nowo w wersji 1.11.6.8) .............................................................................................. 287

    SIN() (Nowo w wersji 1.11.6.8) ......................................................................................................... 288

    SINH() (Nowo w wersji 1.11.6.8) ...................................................................................................... 288

    SONYSEND (Nowo w wersji 1.11.6.8) ............................................................................................. 289

    SOUND ............................................................................................................................................ 291

    SPACE()........................................................................................................................................... 291

    SPC()................................................................................................................................................ 292

    SPIIN ................................................................................................................................................ 292

    SPIINIT............................................................................................................................................. 293

    SPIMOVE()....................................................................................................................................... 293

    SPIOUT ............................................................................................................................................ 294

    SQR() (Nowo w wersji 1.11.6.8) ....................................................................................................... 294

    START.............................................................................................................................................. 295

    STCHECK ........................................................................................................................................ 296

    STOP................................................................................................................................................ 300

    STR()................................................................................................................................................ 302

    STRING() ......................................................................................................................................... 302

    SUB.................................................................................................................................................. 303

    SWAP............................................................................................................................................... 303

    SYSDAY() (Nowo w wersji 1.11.7.3)................................................................................................. 303

    SYSSEC() (Nowo w wersji 1.11.7.3)................................................................................................. 305

    SYSSECELAPSED() (Nowo w wersji 1.11.7.3) ................................................................................ 306

    TAN() (Nowo w wersji 1.11.6.8) ......................................................................................................... 307

    TANH() (Nowo w wersji 1.11.6.8) ...................................................................................................... 308

    THIRDLINE ...................................................................................................................................... 308

    TIME$............................................................................................................................................... 308

    TIME() (Nowo w wersji 1.11.7.3) ...................................................................................................... 310

    TOGGLE .......................................................................................................................................... 311

    TRIM() .............................................................................................................................................. 312

    UCASE()........................................................................................................................................... 312

    UPPERLINE ..................................................................................................................................... 313

    VAL() ................................................................................................................................................ 313

    VARPTR() ........................................................................................................................................ 314

    WAIT ................................................................................................................................................ 314

    WAITKEY()....................................................................................................................................... 315

    WAITMS........................................................................................................................................... 315

    WAITUS ........................................................................................................................................... 316

    WHILE...WEND ................................................................................................................................ 317

    WRITEEEPROM .............................................................................................................................. 317

    X10DETECT (Nowo w wersji 1.11.7.3)............................................................................................. 319

    X10SEND (Nowo w wersji 1.11.7.3) ................................................................................................. 320

  • BASCOM BASIC AVR Wersja 1.11.7.310

    Wstawki asemblerowe ........................................................................................................................... 322

    Lista rozkazw procesorw AVR............................................................................................................ 326

    Biblioteki................................................................................................................................................. 330

    Biblioteka AT_EMULATOR (Nowo w wersji 1.11.7.3)....................................................................... 330

    CONFIG ATEMU (Nowo w wersji 1.11.7.3) ................................................................................ 330

    SENDSCANKBD (Nowo w wersji 1.11.7.3)................................................................................. 332

    Biblioteka BCCARD.......................................................................................................................... 334

    CONFIG BCCARD...................................................................................................................... 335

    BCRESET................................................................................................................................... 335

    BCDEF........................................................................................................................................ 336

    BCCALL...................................................................................................................................... 337

    Biblioteka DATETIME (Nowo w wersji 1.11.7.3) ............................................................................... 343

    Biblioteka EUROTIMEDATE (Nowo w wersji 1.11.6.9)..................................................................... 343

    Biblioteka FP_TRIG (Nowo w wersji 1.11.6.8).................................................................................. 344

    Biblioteka GLCD (Nowo w wersji 1.11.6.8) ....................................................................................... 346

    Biblioteka GLCDSED (Nowo w wersji 1.11.6.9)................................................................................ 346

    Biblioteka LCD4................................................................................................................................ 347

    Biblioteka LCD4E2 ........................................................................................................................... 347

    Biblioteka LCD4BUSY...................................................................................................................... 348

    Biblioteka MCSBYTE........................................................................................................................ 349

    Biblioteka MCSBYTEINT.................................................................................................................. 349

    Biblioteka PS2MOUSE_EMULATOR (Nowo w wersji 1.11.7.3) ....................................................... 350

    CONFIG PS2EMU (Nowo w wersji 1.11.7.3) .............................................................................. 350

    PS2MOUSEXY (Nowo w wersji 1.11.7.3) ................................................................................... 351

    SENDSCAN (Nowo w wersji 1.11.7.3) ........................................................................................ 352

    Biblioteka SPISLAVE (Nowo w wersji 1.11.6.8)................................................................................ 353

    Biblioteka TCPIP (Nowo w wersji 1.11.7.3) ...................................................................................... 354

    CONFIG TCPIP (Nowo w wersji 1.11.7.3) .................................................................................. 355

    BASE64DEC() (Nowo w wersji 1.11.7.3) .................................................................................... 356

    CLOSESOCKET (Nowo w wersji 1.11.7.3) ................................................................................. 357

    GETDSTIP() (Nowo w wersji 1.11.7.3)........................................................................................ 357

    GETDSTPORT() (Nowo w wersji 1.11.7.3) ................................................................................. 358

    GETSOCKET() (Nowo w wersji 1.11.7.3) ................................................................................... 358

    SOCKETCONNECT() (Nowo w wersji 1.11.7.3) ......................................................................... 359

    SOCKETLISTEN (Nowo w wersji 1.11.7.3)................................................................................. 360

    SOCKETSTAT() (Nowo w wersji 1.11.7.3).................................................................................. 360

    TCPREAD() (Nowo w wersji 1.11.7.3) ........................................................................................ 362

    TCPWRITE() (Nowo w wersji 1.11.7.3)....................................................................................... 362

    TCPWRITESTR() (Nowo w wersji 1.11.7.3)................................................................................ 363

    UDPREAD() (Nowo w wersji 1.11.7.3) ........................................................................................ 367

    UDPWRITE() (Nowo w wersji 1.11.7.3) ...................................................................................... 368

    UDPWRITESTR() (Nowo w wersji 1.11.7.3) ............................................................................... 369

  • BASCOM BASIC AVR Wersja 1.11.7.3 11

    Od tumacza.

    Jest to finalna wersja, przeznaczona dla kompilatora w wersji 1.11.7.3, ktry niedawno ukazasi na stronie MCS Electronics www.mcselec.com. W chwili ktrej pisz te sowa nie jest jeszczedostpna wersja DEMO.

    Tekst ten jest w 99% identyczny z tym co zawarto w pliku pomocy. Wersja ta jestprzeznaczona dla osb, ktre wol mie cao informacji na papierze. Poniewa wydruk plikupomocy jest spraw do kopotliw, powsta ten skompilowany tekst. Myl, e format PDF niesprawi nikomu problemu.

    Podzikowania.Dzikuj za dotychczasow korespondencj jak otrzymaem w sprawie tumaczenia. Czekam

    na dalsz. Zwaszcza t dotyczc zauwaonych bdw czy niecisoci. Bd wdziczny zawszelkie tego typu informacje.

    Korespondencja w innych sprawach dotyczcych jzyka BASCOM take jest mile widziana.Postaram si odpowiedzie na kady list.

    I would like to thank BASCOM author: Mark Alberts for support and official released versionswhich ones published on the MCS Electronics website. Really thanks Mark!

    Podzikowania nale si take redakcji miesicznika Elektronika dla Wszystkich, ktratake umieszcza Moj prac na amach swojej witryny internetowej www.edw.com.pl. (Patrz dziaFTP).

    Marteenez - Tobie take nale si podzikowania za przetumaczenie niektrych powaniezakrconych zda.

    Jurek M. Podzikowania za kompilacj do formatu PDF.

    Zbigniew [email protected]

  • BASCOM BASIC AVR Wersja 1.11.7.312

    BASCOM AVR - Tworzenie programu

    Uruchom rodowisko BASCOM AVR; Otwrz plik programu lub utwrz nowy; Sprawd czy ustawienia konfiguracji s zgodne z zaoonymi; Zapisz plik; Dokonaj kompilacji; Jeli wystpiy jakie bdy, popraw je i skompiluj ponownie; Uruchom symulacj; Jeli program nie dziaa zgodnie z oczekiwaniami popraw tekst programu i powtrz operacj

    kompilacji i symulacji. Zaprogramuj ukad i przetestuj w budowanym urzdzeniu;

  • BASCOM BASIC AVR Wersja 1.11.7.3 13

    BASCOM AVR i pami.

    Kada ze zmiennych uywa pewnego obszaru pamici. Domylnie jest to wewntrzna pamidanych zwana: SRAM. Ilo tej pamici jest cile okrelona i zalena od konstrukcji poszczeglnychprocesorw AVR.

    Specjalnym obszarem pamici SRAM jest obszar zajmowany przez rejestry uniwersalne.Rejestry te ponumerowane od R0 do R31, zajmuj dokadnie pierwsze 32 komrki tej pamici (adresy0-31). Rejestry te w rnym stopniu uywane s przez instrukcj jzyka BASCOM BASIC.

    Drugim specjalnym obszarem jest przestrze SFR (Special Function Registers), ktra take

    rozciga si od adresu 0 do &H3F. Jest ona niewidoczna, gdy przykryta jest pamici SRAM. Tylkospecjalne rozkazy maj dostp do tej pamici. Niektre z jej komrek mog by dostpne rwnie wtrybie bitowym. Wtedy kady bit w bajcie ma swj niepowtarzalny adres. Do czego uywana jest pami SRAM.

    Reszta pamici SRAM tzn. ta ktra nie jest zajta przez rejestry i zmienne nie jest wzasadzie uywana przez kompilator. Obszar tej pamici zajmuje jedynie stos sprztowy i programowyoraz tzw. ramka. Wielko tych obszarw zmienia si dynamicznie podczas dziaania programu.

    Niektre z instrukcji mog uywa przestrzeni pamici SRAM na wasne potrzeby. Jest towyranie zaznaczone przy opisie konkretnych instrukcji w pliku pomocy.

    Wracajc do zmiennych, to kada z nich zajmuje pewien obszar pamici, ktrego rozmiar jestcile okrelony na podstawie jej typu. I tak:

    kada zmienna bitowa zajmuje jeden bit z bajtu. Gdy jest ich 8 cay bajt jest wypeniony. kada zmienna typu Byte zajmuje 1 bajt. kada zmienna typu Integer lub Word zajmuje dwa bajty. kada zmienna Long lub Single zajmuje 4 bajty. kada zmienna typu String zajmuje tyle bajtw, ile przypada na jej dugo, plus 1 bajt znak

    koca. kada zmienna tablicowa zajmuje tyle bajtw z ilu komrek si skada, pomnoonych przez

    ilo bajtw jak zajmuje jedna komrka.

    By zatem oszczdnie gospodarowa pamici naley tam gdzie jest to moliwe, uywazmiennych bitowych lub bajtw. Gdy wymagane s liczby ujemne naley uywa typu Integer. Stos programowy.

    Stos programowy jest uywany do przechowywania adresw parametrw procedur i funkcjioraz ich zmiennych lokalnych.

    Dla kadej zmiennej lokalnej lub parametru, uywane s 2 bajty do zapamitania jej adresu wpamici. Tak wic, gdy procedura lub funkcja posiada 10 parametrw, na stosie odoonych jest wtedy10*2 = 20 bajtw. Gdy do tego procedura posiada na przykad 2 zmienne lokalne, to obszar tenpowikszany jest o 4 bajty. Co w sumie daje 24 bajty.

    Wymagany rozmiar stosu moe by atwo obliczony. Naley policzy ile maksymalnieparametrw wystpuje w procedurach lub funkcjach, potem doda do tego liczb jej zmiennychlokalnych i pomnoy otrzyman liczb przez 2. Dla bezpieczestwa naley jeszcze doda 4 bajty nazapas. Ramka.

    Zmienne lokalne trafiaj do obszaru tzw. ramki. Dla przykadu, gdy procedura uywa lokalnejzmiennej typu String o dugoci 40 znakw oraz jedn zmienn typu Long; zapotrzebowanie pamicina ramk wynosi: 41+4 = 45 bajtw.

    Gdy w programie uywane s funkcje dokonujce konwersji liczb na posta tekstow, naprzykad: STR(), VAL() itp.; to wykorzystuj one obszar ramki jako pami robocz. Zwykle potrzebuj

  • BASCOM BASIC AVR Wersja 1.11.7.314

    16 bajtw tej pamici. Reszta przestrzeni adresowej ramki, jest wykorzystywana jako dane lokalne dla zmiennych.

    Uwaga! Instrukcja INPUT przyjmujca dane liczbowe przez port szeregowy, lub instrukcje

    PRINT czy LCD drukujce liczby, take wykorzystuj 16 bajtw ramki, podczas wewntrznej konwersjiliczb na ich posta tekstow i odwrotnie. Pami XRAM

    Do procesora AT90s8515 (lub jego modszego brata AT90s4414), mona w prosty sposbdoczy zewntrzna pami danych zwan XRAM.

    Gdy - przykadowo - doczona pami bdzie miaa rozmiar 32KB, jej pierwsza komrkabdzie miaa adres 0, lecz pocztkowa cz tej pamici zostanie przykryta przez pami SRAM. Takwic pierwsza dostpna komrka pamici XRAM bdzie miaa adres &H260 (dla AT90s8515).

    Zwizane jest to z konstrukcj samego procesora, a nie ograniczeniami jzyka BASCOMAVR. Projektanci z firmy Atmel zaoyli, e przestrze adresowa pamici danych bdzie liniowa. Copozwolio jeszcze bardziej zmniejszy liczb rozkazw (AVR jest procesorem RISC o architekturzeharwardzkiej! przyp. tumacza). Pami ERAM.

    Wikszo procesorw serii AVR posiada wbudowan pami EEPROM. Pami ta moeprzechowywa dane nawet po wyczeniu zasilania. Jak podaje producent nawet do 10 lat.

    Pami t w jzyku BASCOM AVR oznaczono skrtem ERAM.

    Pami ERAM moe by uywana jak normalna pami, w ktrej mona umieszcza dane lubzmienne. Jednak naley uwaa by nie stosowa zmiennych w ERAM, do ktrych czsto zapisywanebd dane - np. zmienna sterujca ptli. Dzieje si tak dlatego, i nominalnie pami EEPROM maograniczona moliwo przeprogramowywania. Producent gwarantuje tylko 100 ty. operacji zapisu.atwo wic w tym przypadku o przekroczenie tej liczby w do krtkim czasie.

    Dlatego nie naley pochopnie uywa tej pamici, i w adnym wypadku nie w instrukcjachptli! Stae.

    Wszystkie stae s zapamitane w specjalnie przeznaczonej do tego celu tablicy. Jest onaoczywicie umieszczona w pamici kodu.

    Podczas kompilacji jest dokonywana prosta optymalizacja, polegajca na wykrywaniupowtrze staych. Popatrzmy na przykad:

    Print "ABCD" Print "ABCD"

    W powyszym przykadzie tylko pierwsza staa ("ABCD") jest zapisana w pamici, lecz tutaj:

    Print "ABCD" Print "ABC"

    zapamitane s obie stae, gdy nie s one takie same, cho znacznie podobne.

  • BASCOM BASIC AVR Wersja 1.11.7.3 15

    BASCOM AVR - Kody bdw.

    Ponisza tabela zawiera list bdw mogcych si pojawi podczas sprawdzania skadni lubkompilacji.

    Kod bdu Opis 1 Nieznana instrukcja 2 Nieznana struktura instrukcji EXIT 3 Spodziewano si WHILE 4 Brak miejsca w pamici IRAM na zmienn typu Bit 5 Brak miejsca na zmienne typu Bit 6 Spodziewana . (kropka) w nazwie pliku. 7 Spodziewana instrukcja IF..THEN 8 Pliku rdowego nie odnaleziono 9 Maksymalnie mona uy 128 instrukcji ALIAS 10 Nieznany typ wywietlacza 11 Spodziewano si INPUT, OUTPUT, 0 lub 1 12 Nieznany parametr instrukcji CONFIG 13 Ta staa ju jest zdefiniowana 14 Bajty mog by tylko w IRAM 15 Bdny typ danych 16 Nieznana definicja 17 Spodziewano si 9 parametrw 18 Zmienne bitowe umieszczone mog by tylko w pamici SRAM

    lub IRAM 19 Spodziewano si okrelenia dugoci zmiennej typu String 20 Nieznany typ danych 21 Brak wolnej pamici IRAM 22 Brak wolnej pamici SRAM 23 Brak wolnej pamici XRAM 24 Brak wolnej pamici EEPROM 25 Ta zmienna ju jest zdefiniowana 26 Spodziewano si AS 27 Spodziewano si parametru 28 Spodziewano si IF..THEN 29 Spodziewano si SELECT..CASE 30 Zmienne bitowe s zmiennymi globalnymi, nie mona ich usuwa 31 Bdny typ danych 32 Niezdefiniowana zmienna 33 Zmienne globalne nie mog by usuwane 34 Bdna ilo parametrw 35 Spodziewano si 3 parametrw 36 Spodziewano si THEN 37 Bdny operator relacji 38 Nie mona wykona tej operacji dla zmiennych bitowych 39 Spodziewano si FOR 40 Ta zmienna nie moe by parametrem instrukcji RESET 41 Ta zmienna nie moe by parametrem instrukcji SET 42 Spodziewano si liczby jako parametru 43 Pliku nie odnaleziono 44 Spodziewano si 2 zmiennych 45 Spodziewano si DO 46 Bdne przypisanie 47 Spodziewano si UNTIL 50 Liczba nie mieci si w zmiennej Integer 51 Liczba nie mieci si w zmiennej Word 52 Liczba nie mieci si w zmiennej Long 60 Ta etykieta ju istnieje

  • BASCOM BASIC AVR Wersja 1.11.7.316

    Kod bdu Opis 61 Etykiety nie znaleziono 62 Najpierw SUB lub FUNCTION 63 Parametrem funkcji ABS() moe by liczba typu Integer lub Long 64 Spodziewany , (przecinek) 65 Urzdzenie nie zostao otwarte 66 Urzdzenie ju jest otwarte 68 Spodziewano si numeru kanau 70 Ta szybko transmisji nie moe by uyta 71 Typ przekazanych parametrw nie jest zgodny z

    zadeklarowanym 72 Getclass error. Jest to bd wewntrzny. 73 Uywanie PRINT w poczeniu z t funkcj jeszcze nie dziaa 74 Spodziewano si 3 parametrw 80 Kod nie mieci si w pamici tego ukadu 81 Uyj funkcji HEX() zamiast PRINTHEX 82 Uyj funkcji HEX() zamiast LCDHEX 85 Nieznane rdo przerwania 86 Bdny parametr w instrukcji CONFIG TIMER 87 Nazwa podana jako parametr instrukcji ALIAS ju jest uywana 88 Spodziewano si 0 lub 1 89 Liczba musi zawiera si w przedziale 1 - 4 90 Ten adres jest za duy 91 Spodziewano si INPUT, OUTPUT, BINARY lub RANDOM 92 Spodziewano si LEFT lub RIGHT 93 Niezdefiniowana zmienna 94 Podano zbyt duo bitw 95 Spodziewano si FALLING albo RISING 96 Stopie podziau preskalera musi by jednym z podanych: 1, 8,

    64, 256 lub 1024 97 Procedura lub funkcja musi by wczeniej zadeklarowana przez

    DECLARE 98 Spodziewano si SET lub RESET 99 Spodziewano si nazwy typu 100 Zmienne tablicowe nie mog by umieszczone w pamici IRAM 101 Nie mog znale takiej nazwy sprztowego rejestru 102 Bd w wewntrznej procedurze 103 Spodziewano si = (znak rwnoci) 104 Nie potrafi zaadowa rejestru 105 Nie potrafi zapisa wartoci bitowej 106 Nieznany rejestr 107 LoadnumValue error 108 Nieznana dyrektywa w pliku definicji rejestrw 109 Spodziewano si znaku = w pseudoinstrukcji .EQU, w

    doczanym pliku 110 Nie znaleziono pliku do doczenia 111 Procedura lub funkcja nie zostaa zadeklarowana przez

    DECLARE 112 Spodziewano si nazwy procedury lub funkcji 113 Ta procedura jest ju zadeklarowana 114 Zmienne lokalne mog by definiowane tylko w treci procedury

    lub funkcji 115 Spodziewano si numeru kanau 116 Bdny plik rejestrw 117 Nieznane rdo przerwania 200 Pliku definicji .DEF nie odnaleziono 201 Spodziewano si rejestru wskanikowego 202 Nie odnaleziono pseudoinstrukcji .EQU, prawdopodobnie ta

    funkcja nie jest obsugiwana przez wybrany procesor 203 Bd w instrukcji LD lub LDD

  • BASCOM BASIC AVR Wersja 1.11.7.3 17

    Kod bdu Opis 204 Bd w instrukcji ST lub STD 205 Spodziewano si } (klamra zamykajca) 206 Podanej biblioteki nie odnaleziono 207 Biblioteka zostaa ju zarejestrowana 210 Nie znaleziono definicji tego bitu 211 Nie znaleziono zewntrznej procedury 212 Spodziewano si LOW LEVEL, RISING lub FALLING 213 Spodziewano si cigu znakw 214 Dugo zmiennej String w pamici XRAM wynosi 0 215 Nieznany skrt mnemoniczny 216 Staa nie zostaa zdefiniowana 217 Zmienne typu BIT lub Boolean nie mog by czone w tablice. 218 Rejestr musi by z zakresu R16-R31 219 Przerwania INT0-INT3 s zawsze wyzwalane niskim poziomem

    logicznym w procesorach MEGA AVR. 220 Skok do przodu poza dozwolonym zakresem 221 Skok do tyu poza dozwolonym zakresem 222 Bdny znak 223 Spodziewano si * (gwiazdki) 224 Indeks spoza zakresu 225 Nawiasy nie mog wystpowa w opisach staych 226 Spodziewano si staej numerycznej lub znakowej 227 Adres pocztkowy pamici SRAM jest wikszy ni jej adres

    kocowy 228 Linie DATA musza by umieszczone poza programem, po

    instrukcji END 229 Spodziewano si END SUB lub END FUNCTION 230 Nie moesz zapisywa do rejestru wejciowego kocwek portu

    (PINx) 231 Spodziewano si TO 232 Ta funkcja nie jest obsugiwana w tym procesorze 233 Instrukcja READ nie dziaa z danymi umieszczonymi w pamici

    EEPROM 234 Spodziewano si instrukcji otwarcia bloku komentarza: ') 235 Spodziewano si instrukcji zamknicia bloku komentarza: '( 236 Liczba nie mieci si w zmiennej typu Byte 238 Ta zmienna nie jest zmienn tablicow 239 Invalid code sequence because of AVR hardware bug 240 Spodziewano si END FUNCTION 241 Spodziewano si END SUB 242 Wystpi brak zgodnoci zmiennych 243 Numer bitu wykracza poza liczb dopuszczaln dla tej zmiennej 244 Nie moesz uywa wskanika Y 245 Zmienne tablicowe nie mog by w pamici IRAM 246 Brak miejsca na definicje w pliku .DEF 247 Spodziewano si kropki 248 Powinien by uyty argument BYVAL w tej deklaracji 249 Procedura obsugi przerwania jest ju zdefiniowana 250 Spodziewano si GOSUB 251 Ta etykieta musi by nazwana SECTIC 252 Spodziewano si zmiennej Integer lub Word 253 Ta zmienna nie moe by w pamici ERAM 254 Spodziewana zmienna 255 Spodziewano si Z lub Z+ 256 Spodziewano si zmiennej typu Single 257 Spodziewano si "" 258 Spodziewano si SRAM 259 Zmienne typu Byte nie mog przyjmowa wartoci ujemnych 260 Cig znakw nie zmieci si w tej zmiennej typu String

  • BASCOM BASIC AVR Wersja 1.11.7.318

    Kod bdu Opis 261 Spodziewano si tablicy 262 Spodziewano si ON lub OFF 263 Indeks tablicy poza zakresem 264 Zamiast tego uyj ECHO OFF i ECHO ON 265 Spodziewano si offsetu w rozkazie LDD lub STD. Np. Z+1 266 Spodziewano si TIMER0, TIMER1 lub TIMER2 267 Spodziewano si staej liczbowej 268 Parametr musi zawiera si w granicach 0 3 269 Spodziewano si END SELECT 270 Ten adres ju jest zajty 322 Ten typ danych nie jest obsugiwany przez t instrukcj 232 Etykieta posiada zbyt duo znakw 234 Ten ukad nie jest obsugiwany przez bibliotek I2C w trybie

    Slave 325 Stopie podziau preskalera musi wynosi: 1, 8, 32, 128, 256 lub

    1024 326 Spodziewano si #ENDIF 327 Maksymalna wielko to 255 328 Nie dziaa z programowym ukadem UART 999 Wersje DEMO lub BETA generuj kod tylko do 2 KB

    Wszystkie inne kody, nie wyszczeglnione powyej s rezultatem bdw wewntrznych. Jeli

    takie si pojawi prosz o stosown informacj. Uwaga! Czsto zdarza si e kompilator raportuje bd File not found, ktry jest zwykle

    spowodowany przez bdne okrelenie parametrw instrukcji - zwaszcza CONFIG. (przyp. tumacza)

  • BASCOM BASIC AVR Wersja 1.11.7.3 19

    Urzdzenia wbudowane w struktur procesora AVR

    Wszystkie procesory serii AVR posiadaj pewn ilo wbudowanych urzdze, mogcych byuytych przez program.

    Podstaw opisu jest procesor AT90s8515, dlatego te niektre elementy mog nie

    wystpowa w procesorach o mniejszych moliwociach, jak na przykad AT90s1200 czy AT90s2313. Uniwersalne Liczniki Czasomierze.

    Kontroler AT90s8515 posiada dwa liczniki-czasomierze, ktre mog by uyte w dowolny zmoliwych sposobw. Licznik TIMER0 jest 8-bitowy i jest prostszy, drugi z nich TIMER1 jest ju 16bitowy i posiada kilka zaawansowanych funkcji.

    Sygna zegarowy doczany do wej licznikw, przechodzi przez 10-bitowy preskaler(dzielnik wejciowy). Liczniki te mog by doczone do kocwek portw, co pozwala na zliczanieimpulsw zewntrznych.

    Ukad przeczajcy i preskaler jest rozrysowany poniej:

    Rysunek 1 Ukad przeczajcy i preskaler.

    Ukad Watchdog.

    Konstruktorzy wychodzc naprzeciw najnowszym trendom w konstruowaniu mikrokontrolerw,wbudowali do procesorw AVR ukad Watchdog.

    Jest to specjalny licznik, zliczajcy impulsy zegarowe 1MHz. Gdy nastpi przepenienie tego

    licznika, generowany jest sygna reset by wyzerowa procesor. Do programisty zatem naley umieszczenie w programie rozkazw powodujcych zerowanie

    tego licznika. Jest to jeden z elementw zabezpieczenia przed zaptleniem si programu lub bdamiw jego dziaaniu. Porty.

    Prawie wszystkie procesory z serii AVR posiadaj porty nazwane PORTB i PORTD. Ukady wobudowach 40 kocwkowych (i wikszych) maj take porty PORTA i PORTC, ktre s uywanetake jako systemowa szyna danych i adresowa (multipleksowana). Porty te zasadniczo nie rni siod portw PORTB lub PORTD.

    Poniewa kocwki portw PORTB i PORTB posiadaj jeszcze specjalne (alternatywne)funkcje, zostan one opisane dokadniej. Ukad transmisji szeregowej.

    Procesory serii AVR (nie wszystkie!) posiadaj wbudowany ukad transmisji szeregowej

  • BASCOM BASIC AVR Wersja 1.11.7.320

    UART. Moe on pracowa w trybie full-duplex oraz posiada niezaleny ukad taktujcy. Zwalnia toliczniki-czasomierze z generowania tego sygnau (porwnaj z procesorami 8051).

    Do zalet naley take zaliczy ukad eliminacji zakce przez wielokrotne prbkowaniebitw oraz ukad wykrywania bdw transmisji: bd ramki (przepenienie rejestru przesuwajcego),bd bitu startu. Interfejs SPI.

    Procesory AVR (take nie wszystkie!) oraz dwa z rodziny 8051 posiadaj ukad SPI sucydo szybkiej, szeregowej transmisji danych pomidzy procesorami lub te procesorami i urzdzeniamizewntrznymi Pracuje on na zasadzie wymiany danych, tj. nadaje i jednoczenie odbiera jeden bajt.

    Jest on take uywany do programowania wewntrznej pamici Flash oraz EEPROM w trybieISP (In System Programming). Komparator analogowy.

    Procesor AVR podobnie jak procesory z rodziny 8051 produkowanej przez Atmel-a posiadawewntrzny komparator analogowy. Moe on suy do porwnywania dwch napi, a przyzastosowaniu odpowiedniego programu i prostego ukadu RC take do ich pomiaru.

  • BASCOM BASIC AVR Wersja 1.11.7.3 21

    Licznik-czasomierz TIMER0

    Licznik TIMER0 jest 8 bitowy. Moe on zlicza impulsy zegara taktujcego procesordoprowadzone do jego wejcia bezporednio lub przez preskaler. Moe te z powodzeniem zliczaimpulsy doprowadzone do jednej z kocwek portw. Zliczanie mona w kadej chwili zatrzyma iwznowi.

    Licznik moe by rdem przerwa. Flaga TOV0 jest ustawiana jeli zostao stwierdzoneprzepenienie licznika. Znajduje si ona w rejestrze TIFR (Timer/Counter Interrupt Flag Register). Abywyczy generowanie przerwa licznika, naley ustawi odpowiedni bit w rejestrze TIMSK(Timer/Counter Interrupt Mask Register).

    Tryb pracy licznika ustala si ustawiajc odpowiednie bity w rejestrze TCCR0(Timer0/Counter0 Control Register).

    Gdy zliczane s zewntrzne impulsy, ich prbkowanie jest zsynchronizowane z zegaremsystemowym. Zatem aby impulsy te nie byy gubione, czas pomidzy kolejnymi impulsami musi bynie krtszy ni dwa pene takty zegara systemowego.

    Prbkowanie odbywa si podczas narastajcego zbocza sygnau zegarowego.

    Poniej znajduje si pogldowy schemat licznika-czasomierza TIMER0.

    Rysunek 2 Licznik-czasomierz TIMER0.

    Na zakoczenie.

    Licznik czasomierz TIMER0 cechuje si du rozdzielczoci i wysok dokadnoci gdyuywany jest przy maych stopniach podziau preskalera. Podobnie, przy duym podziale preskaleralicznik staje si uyteczny przy odmierzaniu krtkich odcinkw czasu.

    Konfiguracj pracy licznika zajmuje si instrukcja CONFIG TIMER0 . Do sterowania licznikiem

    przewidziano instrukcje START oraz STOP. Uproszczono take dostp do rejestrw licznika definiujc w jzyku BASCOM BASIC

    specjaln zmienn COUNTER0. W celu zaadowania wartoci do licznika mona uy specjalnejinstrukcji LOAD, ktra dokonuje niezbdnego przeliczenia tej wartoci, tak aby licznik przepeni si popodanej liczbie impulsw.

    Przewidziano take stosowanie przez uytkownika przerwa jakie generuje licznik. Mona jeatwo obsuy stosujc instrukcj ON INTERRUPT i odpowiedni program obsugi.

  • BASCOM BASIC AVR Wersja 1.11.7.322

    Licznik-czasomierz TIMER1

    Licznik TIMER1 jest 16 bitowy i moe zlicza impulsy zegara taktujcego procesordoprowadzone do jego wejcia bezporednio lub przez preskaler. Moe te z powodzeniem zliczaimpulsy doprowadzone do jednej z kocwek portw. Zliczanie mona w kadej chwili zatrzyma iwznowi.

    Licznik ten podobnie jak TIMER0 moe generowa przerwania, ustawiana jest wtedy flagaTOV1. Wczenie przerwa licznika TIMER1 spowoduje ustawienie odpowiedniej flagi w rejestrzeTIMSK (Timer1/Counter1 Interrupt Mask Register).

    Konfiguracji pracy licznika dokonujemy ustawiajc odpowiednie bity w rejestrach TCCR1A iTCCR1B (Timer1/Counter1 Control Register).

    Gdy zliczane s zewntrzne impulsy, ich prbkowanie jest zsynchronizowane z zegaremsystemowym. Zatem aby impulsy te nie byy gubione, czas pomidzy kolejnymi impulsami musi bynie krtszy ni dwa pene takty zegara systemowego.

    Prbkowanie odbywa si podczas narastajcego zbocza sygnau zegarowego.

    Uwaga! Ponisze funkcje opisano na podstawie licznika TIMER1 procesora AT90s8515, winnych procesorach AVR, mog si one rni.

    Licznik TIMER1 posiada dwa rejestry porwnywania. Nazwane s one Output CompareRegister A (COMPARE1A lub OCR1A) i Output Compare Register B (COMPARE1B lub OCR1B).Gdy w wyniku porwnania stwierdzono, e zawarto ktrego z nich jest identyczna z zawartocilicznika, ustawiane s znaczniki OCR1A lub OCR1B.

    Z rejestrami porwnania jest zwizana jeszcze jedna funkcja: Gdy zawarto rejestruCOMPARE1A bdzie odpowiada zawartoci licznika, licznik moe zosta wyzerowany.

    Licznik TIMER1 moe by take uywany jako generator impulsw o modulowanej szerokoci.Rozdzielczo generatora moe by wtedy ustawiona jako 8, 9 lub 10 bitowa. W trybie tym licznik orazrejestry OCR1A/OCR1B tworz razem ukad generatora impulsw PWM (Pulse Width Modulation).

    Zmiana wypenienia (szerokoci) impulsw polega na wpisaniu odpowiednich wartoci dorejestrw OCR1A i OCR1B. Wyjciem impulsw generatora PWM jest wtedy kocwka OC1.

    TIMER1 posiada take rejestr oraz tryb przechwytywania. W trybie tym mona w dowolnejchwili przechwyci zawarto licznika do specjalnego rejestru ICR1 (Input Capture Register).Sterowaniem przechwytywania zajmuje si specjalna kocwka ICP. Ustawienia trybuprzechwytywania dokonuje si w rejestrze TCCR1B.

    Dodatkowo mona uy wbudowanego komparatora analogowego, do kontroli stanu linii ICP.

    Poniej przedstawiono pogldowy schemat licznika-czasomierza TIMER1.

  • BASCOM BASIC AVR Wersja 1.11.7.3 23

    Rysunek 3 Licznik-czasomierz TIMER1

    Na zakoczenie.

    Licznik czasomierz TIMER1 cechuje si wysok rozdzielczoci i dokadnoci gdy uywanyjest przy maych stopniach podziau preskalera. Podobnie, przy duym podziale preskalera licznikstaje si uyteczny przy dokadnym odmierzaniu nawet do dugich odcinkw czasu.

    Konfiguracj pracy licznika zajmuje si instrukcja CONFIG TIMER1. Do sterowania licznikiem

    przewidziano instrukcje START oraz STOP. Uproszczono take dostp do rejestrw licznika definiujc w jzyku BASCOM BASIC kilka

    specjalnych zmiennych (COUNTER1, PWM1A, CAPTURE1, COMPARE1A). W celu zaadowaniawartoci do licznika mona uy specjalnej instrukcji LOAD, ktra dokonuje niezbdnego przeliczeniatej wartoci, tak aby licznik przepeni si po podanej liczbie impulsw.

    Przewidziano take stosowanie przez uytkownika przerwa jakie generuje licznik. Mona jeatwo obsuy stosujc instrukcj ON INTERRUPT w poczeniu z odpowiednim programem obsugi.

    Ukad Watchdog

    Ukad Watchdog skada si ze specjalnego licznika, zliczajcego impulsy pochodzce zodrbnego generatora o czstotliwoci 1MHz (przy napiciu zasilania Vcc=5V), przechodzcych przezdodatkowy preskaler.

  • BASCOM BASIC AVR Wersja 1.11.7.324

    Rysunek 4 Ukad Watchdog.

    Stopie podziau preskalera mona ustawia w do szerokim zakresie poczwszy od

    dzielnika przez 16k do dzielnika przez 2048k, co daje czas opnienia przepenienia licznika od 16msdo okoo 2 sekund. Gdy licznik si przepeni generowany jest sygna RESET zerujcy mikroprocesor.

    Ustawienie stopnia podzia preskalera ukadu Watchdog jest moliwe za pomoc instrukcji

    CONFIG WATCHDOG. Aby wyzerowa licznik ukadu Watchdog naley uy instrukcji RESETWATCHDOG.

    Sterowaniem prac ukadu Watchdog zajmuj si instrukcje START oraz STOP.

    Port B

    Port PB jest dwukierunkowym 8 bitowym portem. W przestrzeni rejestrw specjalnych sumieszczone a trzy rejestry do obsugi portu. Pierwszy z nich to rejestr danych nazwany PORTB(adres &H18 i &H38). Drugi rejestr DDRB (Data Direction Register. adres &H17 i &H37) suy dookrelenia kierunku dziaania poszczeglnych linii portu. Trzeci to rejestr wejciowy PINB (Port InputPins, adres &H16 i &H36), ktry odwzorowuje bezporednio stan kocwek portu. Rejestr PINB jestprzeznaczony tylko do odczytu, nie mona zatem wpisa tam adnej wartoci. Reszta rejestrw jest odostpie swobodnym.

    Wszystkie kocwki portu posiadaj rezystory podcigajce, mogce by wczane osobnodla kadej z kocwki. Port PB moe take bezporednio sterowa diodami LED, gdy prdwpywajcy moe mie warto nawet do 20mA.

    Gdy kocwki portu PB0-PB7 pracujc jako wejcia s zewntrznie cignite do masy, toprzy wczonym wewntrznym podciganiu bd rdem prdu wypywajcego. Port PB jako wejcie-wyjcie funkcji alternatywnych.

    Kocwki portu B mog take peni alternatywne funkcje, ktrych opis przedstawiono wtabeli: Funkcje alternatywne kocwek portu B

    Port Kocwka Funkcja alternatywna PORTB.0 T0 (Timer/Counter 0 wejcie impulsw zewntrznych) PORTB.1 T1 (Timer/Counter 1 wejcie impulsw zewntrznych) PORTB.2 AIN0 (Komparator analogowy wejcie nieodwracajce) PORTB.3 AIN1 (Komparator analogowy wejcie odwracajce) PORTB.4 SS (SPI linia Slave Select SS) PORTB.5 MOSI (SPI Wejcie w trybie MASTER/Wyjcie w trybie SLAVE) PORTB.6 MISO (SPI Wyjcie w trybie MASTER/Wejcie w trybie SLAVE) PORTB.7 SCK (SPI Zegar taktujcy)

    Gdy kocwki portu maj peni rol wejcia-wyjcia funkcji alternatywnej, rejestry DDRB iPORTB musz by ustawione zgodnie z opisem funkcji.

  • BASCOM BASIC AVR Wersja 1.11.7.3 25

    Port wejciowy PINB nie jest waciwie rejestrem, a operacja odczytu wcza tylko specjalnytryb pracy portu, gdzie stan kocwek jest odczytywany wprost z wyprowadzenia. Natomiastodczytywanie zawartoci rejestru PORTB, spowoduje odczytanie tylko stanu wewntrznychzatrzaskw. Opis funkcji alternatywnych. T0 PORTB, Bit 0

    Kocwka ta moe by uywana jako wejcie zewntrznych impulsw, ktrych zliczaniemzajmuje si licznik TIMER0. Licznik moe wtedy reagowa na okrelony poziom logiczny lub nazmian stanu kocwki. T1 PORTB, Bit 1

    Kocwka ta moe by uywana jako wejcie zewntrznych impulsw, ktrych zliczaniemzajmuje si licznik TIMER1. Licznik moe wtedy reagowa na okrelony poziom logiczny lub nazmian stanu kocwki. AIN0 (+) PORTB, Bit 2 AIN1 (-) PORTB, Bit 3

    Kocwki te s doczone do wej wbudowanego w procesor komparatora analogowego,ktry jest rdem przerwania. Mona go wykorzysta do porwnywania napi, a stosujc odpowiednifragment programu take do ich pomiaru.

    Komparator moe by uyty do wyzwalania funkcji przechwytywania licznika TIMER1. SS PORTB, Bit 3

    Wejcie uaktywniajce ukad SPI, stosowane w systemach z kilkoma procesorami AVRkomunikujcymi si przez interfejs SPI.

    Jest wykorzystywana take podczas programowania procesora w trybie ISP. MOSI PORTB, Bit 2 MISO PORTB, Bit 1

    Wejcia/wyjcia ukadu SPI. S one doczone do jego wewntrznego rejestruprzesuwajcego, sucego do wymiany danych.

    S wykorzystywane take podczas programowania procesora w trybie ISP. SCK PORTB, Bit 0

    Wejcie/Wyjcie impulsw taktujcych transmisj przez ukad SPI. Kocwka ta wykorzystywana jest take podczas programowania procesora w trybie ISP.

    Port PB jako uniwersalny port wejcia wyjcia.

    Wszystkie 8 linii portu s rwnorzdne, gdy uywane s jako zwyke wejcia-wyjcia. BityDDBn w rejestrze DDRB okrelaj kierunek dziaania kocwki portu. Gdy bit jest ustawiony (stan 1)kocwka peni rol wyjcia, gdy jest wyzerowany (stan 0) kocwka peni rol wejcia. Jelidodatkowo okrelony bit w rejestrze PORTBn jest ustawiony (stan 1) a kocwka peni rol wejcia,wczany jest rezystor podcigajcy. By wyczy rezystor podcigajcy naley w rejestrze PORTBwyzerowa odpowiedni bit, lub te skonfigurowa lini portu jako wyjcie:

    DDBn PORTBn Tryb pracy Podciganie Komentarz 0 0 Wejcie Nie Trjstanowe (Hi-Z) 0 1 Wejcie Tak Z linii PBn moe wypywa prd, gdykocwka bdzie cignita do masy. 1 0 Wyjcie Nie Stopie wyjciowy typu Push-Pull, stan 0 1 1 Wyjcie Nie Stopie wyjciowy typu Push-Pull, stan 1

    Na zakoczenie.

    Zarwno porty jak i pojedyncze linie tyche portw mog pracowa jako wejcia lub wyjcia.Ustalenie trybu pracy jest moliwe za pomoc instrukcji CONFIG PORT jak i CONFIG PIN.

  • BASCOM BASIC AVR Wersja 1.11.7.326

    Port D

    Sposb dziaania i konfiguracji portu PD jest prawie identyczny jak w porcie PB, wic niebdzie opisany powtrnie. Adresy rejestrw portu s nastpujce: PORTD - &H12 i &H32, DDRD -&H11 i &H31, PIND - &H10 i &H30. Port PB jako wejcie-wyjcie funkcji alternatywnych.

    Kocwki portu PB mog take peni alternatywne funkcje, ktrych opis przedstawiono wtabeli: Funkcje alternatywne kocwek portu B

    Port Kocwka Funkcja alternatywna PORTD.0 RDX (UART Wejcie) PORTD.1 TDX (UART Wyjcie) PORTD.2 INT0 (Wejcie zewntrznego przerwania INT0) PORTD.3 INT1 (Wejcie zewntrznego przerwania INT1) PORTD.5 OC1A (Wyjcie sygnau porwnania licznika TIMER1) PORTD.6 WR (Wyjcie strobujce zapis do zewntrznej pamici) PORTD.7 RD (Wyjcie strobujce odczyt z zewntrznej pamici)

    Gdy kocwki portu maj peni rol wejcia-wyjcia funkcji alternatywnej, rejestry DDRB iPORTB musz by ustawione zgodnie z opisem funkcji. Opis funkcji alternatywnych. RD PORTD, Bit 7

    Sygna RD suy do aktywowania ukadu odczytu zewntrznej pamici RAM. WR PORTD, Bit 6

    Sygna RD suy do aktywowania ukadu zapisu zewntrznej pamici RAM. OC1 PORTD, Bit 5

    Wyjcie sygnau przechwytywania licznika TIMER1. Stan tej kocwki zmienia si, gdy wwyniku porwnania zawartoci licznika z rejestrem porwnawczym, stwierdzono ich zgodno.

    Kocwka PD5 musi by ustawiona jako wyjcie by penia t funkcj, tzn. DDD5 ustawiony(stan 1). Zobacz opis licznika-czasomierza TIMER1 by dowiedzie si wicej.

    Kocwka ta te moe by wyjciem impulsw licznika w trybie PWM. INT1 PORTD, Bit 3

    Wejcie zewntrznego sygnau przerwania. Kocwka PD3 moe z powodzeniem obsugiwasygnay pochodzce z urzdze zewntrznych, pojawiajcych si periodycznie lub systematycznie, awymagajcych akcji ze strony procesora. Zobacz informacje na temat przerwa, aby uzyskadodatkowe informacje. INT0 PORTD, Bit 2

    Wejcie zewntrznego sygnau przerwania. Kocwka PD2 moe z powodzeniem obsugiwasygnay pochodzce z urzdze zewntrznych, pojawiajcych si periodycznie lub systematycznie, awymagajcych akcji ze strony procesora. Zobacz informacje na temat przerwa, aby uzyskadodatkowe informacje. TXD PORTD, Bit 1

    Wyjcie danych przesyanych przez wewntrzny UART. Gdy dziaa ukad UART, kocwkaportu jest automatycznie konfigurowana dla celw transmisji bitw, niezalenie od stanu bitu DDRD1. RXD PORTD, Bit 0

    Wejcie danych odbieranych przez wewntrzny UART. Gdy dziaa odbiornik ukadu UART,kocwka portu jest automatycznie konfigurowana dla celw transmisji bitw, niezalenie od stanubitu DDRD1. Dodatkowo gdy ukad UART ustawi tryb pracy kocwki jako wejcie, ustawienie jedynkiw bicie PORTD0, powoduje wczenie wewntrznego podcigania.

  • BASCOM BASIC AVR Wersja 1.11.7.3 27

    Gdy kocwki TXD oraz RXD nie s uywane do transmisji przez UART, mog by normalnieuywane jako uniwersalne porty wejcia-wyjcia. Wtedy jednak nie mona uywa instrukcji PRINT iINPUT, oraz innych operujcych na wbudowanym ukadzie UART.

    Uwaga! W rejestrze UCR (UART Control Register) bity 3 i 4 nie s standardowo ustawiane,co oznacza e kocwki TXD i RXD nie s uywane przez UART. Nie jest to jednak regu. W tymwypadku lepiej w programie wyzerowa te bity, stosujc na przykad taki blok instrukcji:

    Reset UCR.3 Reset UCR.4

    Port PD jako uniwersalny port wejcia wyjcia.

    Wszystkie 8 linii portu s rwnorzdne, gdy uywane s jako zwyke wejcia-wyjcia. BityDDDn w rejestrze DDRD okrelaj kierunek dziaania kocwki portu. Gdy bit jest ustawiony (stan 1)kocwka peni rol wyjcia, gdy jest wyzerowany (stan 0) kocwka peni rol wejcia. Jelidodatkowo okrelony bit w rejestrze PORTDn jest ustawiony (stan 1) a kocwka peni rol wejcia,wczany jest rezystor podcigajcy. By wyczy rezystor podcigajcy naley w rejestrze PORTDwyzerowa odpowiedni bit, lub te skonfigurowa lini portu jako wyjcie:

    DDBn PORTDn Tryb pracy Podciganie Komentarz 0 0 Wejcie Nie Trjstanowe (Hi-Z) 0 1 Wejcie Tak Z linii PDn moe wypywa prd, gdykocwka bdzie cignita do masy. 1 0 Wyjcie Nie Stopie wyjciowy typu Push-Pull, stan 0 1 1 Wyjcie Nie Stopie wyjciowy typu Push-Pull, stan 1

    Na zakoczenie.

    Zarwno porty jak i pojedyncze linie tyche portw mog pracowa jako wejcia lub wyjcia.Ustalenie trybu pracy jest moliwe za pomoc instrukcji CONFIG PORT jak i CONFIG PIN.

    Ukad transmisji szeregowej UART

    Mikrokontrolery rodziny AVR posiadaj ukad uniwersalnego portu szeregowego, mogcegosuy do transmisji w standardzie RS232. Transmisja moe si odbywa w trybie full-duplex, gdyukad ten posiada dwa niezalene rejestry transmisyjne. Ukad posiada take wasny ukad taktujcy,co zwalnia liczniki-czasomierze z generowania tego sygnau. Jest to znaczne rozszerzenie moliwociukadu UART w stosunku do popularnej rodziny kontrolerw 8051.

    Cze nadawcza.

    Gwn czci ukadu nadajnika transmisji jest rejestr przesuwajcy, poczony z rejestrembufora UDR (UART Data Register) do ktrego naley wpisa transmitowany bajt. Po stwierdzeniu erej. przesuwajcy jest pusty, zawarto rej. UDR jest przepisywana do rejestru przesuwajcego corozpoczyna transmisj tego bajtu.

  • BASCOM BASIC AVR Wersja 1.11.7.328

    Rysunek 5 UART - Cz nadawcza.

    Poniewa ukad UART moe take transmitowa dane 9-bitowe, w rejestrze UCR (UART

    Control Register) s umieszczone bity TX8 oraz CHR9. Ustawienie bitu CHR9 suy do wczenia tegotrybu, co powoduje, e rwnoczenie wraz z bajtem z rej. UDR przepisany do rej. przesuwajcegobdzie take stanu bitu TX8.

    Uwaga! Stan tego bitu musi by ustalony przed wpisaniem wartoci do rejestru UDR. Przepisanie wartoci z rejestru UDR do rej. przesuwajcego powoduje take ustawienie bitu

    UDRE (UART Data Register Empty) co jest sygnaem, e mona wpisa now warto do rejestruUDR. Zostanie ona przepisana automatycznie po zakoczeniu transmisji biecego bajtu (wysuniciubitu stopu). Skasowanie bitu UDRE moe odby si tylko sprztowo, poprzez zapis do rejestru UDR.

    Jeli po ustawieniu bitu UDRE nie nastpi zapis do rejestru UDR to po zakoczeniu transmisjibiecego bajtu jest ustawiona flaga TXC (UART Transmission Complette). Oznacza to, e cznadawcza ukadu UART zakoczya transmisj i jest wolna.

    Cze odbiorcza.

    Podobnie jak w przypadku nadajnika, gwn czci czci odbiorczej jest rejestrprzesuwajcy oraz poczony z nim rejestr bufora UDR. Niebagateln rol peni take ukad logiki, wktrym umieszczono ukad eliminacji zakce.

  • BASCOM BASIC AVR Wersja 1.11.7.3 29

    Rysunek 6 UART - Cz odbiorcza.

    Rejestr UDR to waciwie dwa rejestry umieszczone pod tym samym adresem. Jeden z nich

    jest udostpniony tylko do zapisu (dla nadajnika), a drugi tylko do odczytu (dla odbiornika). Przytransmisji 9 bitowej ostatni odebrany bit danych (MSB) trafia do rejestru UCR bit RX8.

    Jak wspomniano na pocztku cz odbiorcza jest wyposaona w ukad eliminujcy

    zakcenia jakie mog wystpi podczas transmisji bitw. Mechanizm jego dziaania jest prosty.Polega on na wielokrotny