1. Wstęp 9
2. Różnice pomiędzy mikrokontrolerami ST7 a ST7LITE 11
3. Rdzeń mikrokontrolerów ST7FLITE 15
3.1. Jednostka centralna 16
3.2. Organizacja i mapa pamięci 19
3.2.1. Pamięć RAM 20
3.2.2. Pamięć EEPROM 20
3.2.3. Pamięć Flash 22
3.3. Organizacja stosu mikrokontrolera 22
3.4. Tryby adresowania pamięci 23
3.4.1. Adresowanie proste 24
3.4.2. Adresowanie natychmiastowe 25
3.4.3. Adresowanie bezpośrednie z adresem 8- lub 16-bitowym 26
3.4.4. Adresowanie indeksowe bez przesunięcia 27
3.4.5. Adresowanie indeksowe z przesunięciem 8- lub 16-bitowym 28
3.4.6. Adresowanie pośrednie ze wskaźnikiem 8- lub 16-bitowym 30
3.4.7. Adresowanie pośrednie ze wskaźnikiem 8- lub 16-bitowym i rejestrem indeksowym X lub Y 31
3.4.8. Adresowanie bezpośrednie względne z przesunięciem 8-bitowym 33
3.4.9. Adresowanie względne ze wskaźnikiem 8-bitowym 34
3.4.10. Adresowanie bitów 35
3.5. Rejestry i ich funkcje 36
3.5.1. Akumulator (A) 36
3.5.2. Rejestry indeksowe X i Y 36
3.5.3. Licznik rozkazów PC 36
3.5.4. Rejestr kodów warunkowych CCR, flagi 37
3.5.5. Wskaźnik stosu SP 38
3.6. Obsługa przerwań 39
3.6.1. Priorytety przerwań 40
3.6.2. Źródła sygnałów przerwań 42
3.6.3. Wektory przerwań 42
4. Porty wejścia/wyjścia 45
4.1. Budowa, działanie i tryby pracy 47
4.2. Zasady konfiguracji portów wejścia/wyjścia 47
4.3. Porty I/O jako wejścia przerwań zewnętrznych 52
5. Tryby oszczędzania energii 53
5.1. Tryb SLOW 54
5.2. Tryb WAIT 55
5.3. Tryb HALT 55
5.4. Tryb ACTIVE-HALT 56
5.5. Automatyczne wyjście z trybu HALT (Auto Wake Up) 57
6. Rejestr kontroli integralności systemu 59
7. Układy peryferyjne 61
7.1. Generator sygnału zegarowego 62
7.1.1. Praca z generatorem zewnętrznym 63
7.1.2. Współpraca z rezonatorem kwarcowym 64
7.1.3. Kalibracja generatora RC 64
7.1.4. Wewnętrzne generatory PLL synchronizowane przebiegiem zegarowym 65
7.2. Generator sygnału zerującego 65
7.3. Sprzętowa kontrola poprawności pracy programu: timer-watchdog (WDG) ...67
7.4. 12-bitowy Timer AT2 i tryby jego pracy 68
7.4.1. Wybór źródła sygnału zegarowego dla Timera AT2 69
7.4.2. Generowanie sygnałów PWM 70
7.4.3. Funkcja przechwytywania (Input Capture) Timera AT2 73
7.5. Timer Lite 2 i tryby jego pracy 73
7.6. 10-bitowy przetwornik analogowo-cyfrowy 75
7.6.1. Pomiary napięcia z wykorzystaniem przetwornika A/C 76
7.7. Interfejs SPI 77
7.8. Przetwornik A/C mikrokontrolerów ST7FLITE0 78
7.9. Analogowy komparator napięcia 80
7.10. Podwójny 12-bitowy Timer 3 (AT3) 83
7.11. Szeregowy interfejs LINSCI 86
8. Programowanie mikrokontrolerów ST7 z wykorzystaniem asemblera 91
8.1. Tryby adresowania i sposoby ich użycia 93
8.2. Lista poleceń asemblera 93
8.2.1. Rozkazy ładowania i przesyłania 97
8.2.2. Operacje na stosie 100
8.2.3. Inkrementacja i dekrementacja 102
8.2.4. Porównania i testy wartości 104
8.2.5. Operacje logiczne 107
8.2.6. Testowanie bitów stanu oraz skoki 112
8.2.7. Operacje arytmetyczne 113
8.2.8. Przesunięcia i rotacje 117
8.2.9. Skoki i wywołania podprogramów 123
8.2.10. Skoki warunkowe 128
8.2.11. Obsługa przerwań 129
8.2.12. Modyfikacja stanu flag warunkowych 131
8.3. Lista dyrektyw kompilatora 132
8.3.1. BELL 132
8.3.2. BYTE 132
8.3.3. BYTES 133
8.3.4. CEQU 133
8.3.5. CTRL 133
8.3.6. DATE 133
8.3.7. DC.B 134
8.3.8. DC.W 134
8.3.9. DC.L 135
8.3.10. #DEFINE 136
8.3.11. DS.B 137
8.3.12. DS.W 137
8.3.13. DS.L 137
8.3.14. END 138
8.3.15. EQU 138
8.3.16. EXTERN 138
8.3.17. #ELSE 139
8.3.18. #ENDIF 139
8.3.19. FCS 139
8.3.20. FORM 139
8.3.21. GROUP 140
8.3.22. #IF 140
8.3.23. #IF1 141
8.3.24. #IF2 141
8.3.25. #IFB 141
8.3.26. #IFIDN 142
8.3.27. #IFDEF 142
8.3.28. #IFLAB 142
8.3.29. #INCLUDE 143
8.3.30. INTEL 143
8.3.31. INTERRUPT 143
8.3.32. LALL 144
8.3.33. LIST 144
8.3.34. #LOAD 144
8.3.35. LOCAL 144
8.3.36. LONG 145
8.3.37. LONGS 145
8.3.38. MACRO 145
8.3.39. MEND 146
8.3.40. MOTOROLA 146
8.3.41. NEAR 146
8.3.42. NOCHANGE 147
8.3.43. NOLIST 147
8.3.44. %OUT 147
8.3.45. PAGE 147
8.3.46. PUBLIC 148
8.3.47. REPEAT 148
8.3.48. SALL 148
8.3.49. SEGMENT 149
8.3.50. SETDP 150
8.3.51. SKIP 150
8.3.52. STRING 151
8.3.53. SUBTTL 151
8.3.54. TAB 151
8.3.55. TEXAS 152
8.3.56. TITLE 152
8.3.57. UNTIL 152
8.3.58. WORD 153
8.3.59. WORDS 153
8.3.60. XALL 153
8.3.61. ZILOG 154
9. Narzędzia programowe i sprzętowe 155
9.1. ST7 Visual Develop 156
9.1.1. Informacje zawarte w menu pomocy 156
9.1.2. Tworzenie folderu roboczego (workspace) 157
9.1.3. Dodawanie do projektu plików z kodami źródłowymi 160
9.1.4. Kompilowanie programu 162
9.1.5. Uruchamianie programu, menu Debug 163
9.2. ST7 Visual Programmer 167
9.2.1. Tworzenie nowego zbioru projektu 168
9.2.2. Zapis danych do pamięci mikrokontrolera 170
9.2.3. Odczyt i weryfikacja zawartości programowanej pamięci 170
9.2.4. Uwagi na temat użytkowania ST7VP 170
9.3. Kompilatory języków C, C++ i asembler 171
9.3.1. Cosmic C 171
9.3.1.1. Obsługa pakietu 171
9.3.1.2. Kompilowanie programu 173
9.3.1.3. Uruchamianie programu – aplikacji dla mikrokontrolera 173
9.4. Programator ST7STICK i programowanie mikrokontrolerów ST7LITE w aplikacji 174
9.5. Opis zestawu ZL1ST7 178
9.6. Inne narzędzia sprzętowe 178
10. Przykłady 181
10.1. Podstawowe działania arytmetyczne 182
10.1.1. Dzielenie całkowite dwóch liczb 1-bajtowych bez znaku 182
10.1.2. Mnożenie całkowitych liczb 1-bajtowych bez znaku 184
10.1.3. Mnożenie całkowitych liczb 2-bajtowych bez znaku 185
10.1.4. Dzielenie całkowite liczby 4-bajtowej przez 2-bajtową 187
10.1.5. Dodawanie dwóch liczb 2-bajtowych bez znaku 189
10.1.6. Odejmowanie dwóch liczb 2-bajtowych bez znaku 190
10.1.7. Sprawdzenie, czy liczba 2-bajtowa bez znaku mieści się w podanym zakresie 191
10.1.8. Sprawdzenie odchylenia od środkowej liczby 2-bajtowej 192
10.1.9. Konwersja liczb binarnych na dziesiętne 195
10.2. Przykładowy program do obsługi modułu wyświetlacza LCD o organizacji 2 linie×20 znaków w konfiguracji z interfejsem 4-bitowym ... 196
10.3. Pomiar napięcia na wejściu AIN4. Wykorzystanie procedury obsługi wyświetlacza i procedur matematycznych 204
10.3.1. Opis programu głównego 205
10.3.2. Pomiar napięcia (volts) 205
10.3.3. Konwersja liczby binarnej na dziesiętną (bin_2_dec) 206
10.3.4. Konwersja na postać ASCII i formatowanie wyniku 208
10.4. Dyskryminator okienkowy, czyli mikroprocesorowy czujnik oświetlenia 217
10.5. Sterowanie rejestrami przesuwnymi z wykorzystaniem interfejsu SPI na przykładzie 6-cyfrowego wyświetlacza LED 224
10.5.1. Wysyłanie danych przez SPI 226
10.5.1.2. Obsługa przerwania timera B 228
10.5.1.3. Wyświetlanie wartości – program główny 229
10.5.1.4. Nastawy mikrokontrolera: makra 229
10.6. Wyświetlanie wyniku pomiaru napięcia z wykorzystaniem wyświetlacza LED 233
10.7. Wykorzystanie ekspandera portów MCP23S08 239
10.7.1. Opis funkcjonalny układu MCP23S08 240
10.7.2. Odczyt i zapis danych 241
10.7.3. Przykład programu wyświetlającego liczbę binarną na diodach LED 242
10.7.4. Diodowa skala LED. Zapis do MCP23S08 bez autoinkrementacji adresu 247
10.8. Wykorzystanie generatora PWM do regulacji prędkości obrotowej silnika prądu stałego małej mocy 255
10.8.1. Podstawowe informacje na temat generatora PWM 255
10.8.2. Opis programu sterującego 256
10.8.3. Inne przykłady wykorzystania generatora PWM 261
10.9. Programowy interfejs UART 264
10.9.1. Komunikacja przez UART 264
10.9.2. Komunikacja mikrokontrolera z komputerem PC 265
10.9.3. Programowy UART dla ST7FLITE 265
10.10. Obsługa konwertera SPI<->RS232 (układ MAX3100) 274
Dodatki 281
Dodatek A. Dokumentacja uproszczonego programatora ICP dla mikrokontrolerów ST7 282
Dodatek B. Tabela kodów ASCII 285
Dodatek C. Tabela kodów znakowych sterownika LCD HD44870 287
Dodatek D. Wybrane parametry elektryczne i czasowe mikrokontrolerów z rodziny ST7FLITE 289
Dodatek E. Wyprowadzenia mikrokontrolerów ST7LITE 292
Dodatek F. Bajty opcji (Option Bytes) 295