دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش: 2
نویسندگان: Han-Way Huang
سری:
ISBN (شابک) : 1435427424, 9781435427426
ناشر: Cengage Learning
سال نشر: 2009
تعداد صفحات: 881
زبان: English
فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود)
حجم فایل: 10 مگابایت
در صورت تبدیل فایل کتاب The HCS12 9S12: An Introduction to Software and Hardware Interfacing به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب HCS12 9S12: مقدمه ای بر نرم افزار و رابط سخت افزاری نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
این کتاب جدید یک راه حل کامل برای یادگیری و آموزش طراحی سیستم های جاسازی شده بر اساس میکروکنترلر HCS12/9S12 Freescale ارائه می دهد. خوانندگان گام به گام نحوه برنامه نویسی HCS12 را با استفاده از هر دو زبان اسمبلی و C و همچنین نحوه استفاده از ابزارهای توسعه مانند CodeWarrior، ImageCraft ICC12، MiniIDE، GNU C و EGNU IDE را یاد خواهند گرفت. مثالهای پشتیبانی به وضوح تمام کاربردهای عملکردهای جانبی HCS12، از جمله پورت موازی، عملکردهای تایمر، PWM، پورت UART، SPI، I2C، CAN، برنامهنویسی فلاش روی تراشه و EEPROM، گسترش حافظه خارجی و غیره را به خوبی نشان میدهند. بخش های جدیدی در مورد سبک برنامه نویسی C، روش توسعه نرم افزار و استفاده مجدد از نرم افزار در این ویرایش اضافه شده است. یک سی دی پشت کتاب حاوی کد منبع برای همه نمونه های کتاب، چندین گروه از توابع کاربردی قابل استفاده مجدد، و ابزارهای توسعه نرم افزار رایگان برای یادگیری بهتر است.
This new book provides a total solution for learning and teaching embedded system design based on the Freescale HCS12/9S12 microcontroller. Readers will learn step-by-step how to program the HCS12 using both assembly and C languages, as well as how to use such development tools as CodeWarrior, ImageCraft ICC12, MiniIDE, GNU C, and EGNU IDE. Supportive examples clearly illustrate all applications of the HCS12 peripheral functions, including parallel port, timer functions, PWM, UART port, SPI, I2C, CAN, on-chip flash and EEPROM programming, external memory expansion, and more. New sections on C programming style, software development methodology, and software reuse have been added in theis revision. A back-of-book CD contains the source code for all examples in the book, several groups of reusable utility functions, and complimentary freeware development tools for improved learning.
Front Cover......Page 1
Title Page......Page 2
Copyright......Page 3
Contents......Page 4
Preface......Page 20
1.1 Objectives......Page 26
1.3 Computer Hardware Organization......Page 27
1.3.1 The Processor......Page 28
1.3.2 Microprocessor......Page 30
1.3.3 Microcontroller......Page 31
1.3.4 Embedded Systems......Page 32
1.4.5 Random-Access Memory......Page 33
1.4.6 Read-Only Memory......Page 34
1.5 Memory System Operation......Page 35
1.5.1 Read Operation......Page 36
1.6.1 The Circuit of the Program Counter......Page 37
1.6.3 Instruction Execution Process......Page 39
1.6.5 Instruction Execution Process......Page 40
1.7 Overview of the HCS12 Microcontroller......Page 46
1.8 The HCS12 CPU Registers......Page 47
1.9.2 Immediate Mode......Page 49
1.9.5 Relative Mode......Page 50
1.9.8 Indexed Addressing Mode with Offset in an Accumulator......Page 51
1.9.9 Auto Pre-/Postdecrement/-Increment Indexed Addressing Modes......Page 52
1.9.11 Accumulator D Indirect Indexed Addressing......Page 53
1.11.1 The Load and Store Instructions......Page 54
1.11.2 Transfer and Exchange Instructions......Page 55
1.11.3 Move Instructions......Page 57
1.11.4 Add and Subtract Instructions......Page 58
1.12 Instruction Queue......Page 59
1.13 Summary......Page 60
1.14 Exercises......Page 61
2.1 Objectives......Page 64
2.2.1 The Label Field......Page 65
2.2.4 The Comment Field......Page 66
2.3 Assembler Directives......Page 67
2.4 Software Development Issues......Page 70
2.5 Writing Programs to Do Arithmetic......Page 72
2.5.1 Carry/Borrow Flag......Page 74
2.5.2 Multiprecision Addition......Page 75
2.5.3 Subtraction and the C Flag......Page 76
2.5.4 Multiprecision Subtraction......Page 77
2.5.5 Binary-Coded-Decimal (BCD) Addition......Page 78
2.5.6 Multiplication and Division......Page 80
2.6 Program Loops......Page 85
2.6.2 Branch Instructions......Page 88
2.6.3 Compare and Test Instructions......Page 90
2.6.5 Implementation of Looping Constructs......Page 91
2.6.6 Decrementing and Incrementing Instructions......Page 95
2.6.7 Bit Condition Branch Instructions......Page 96
2.7 Shift and Rotate Instructions......Page 97
2.8 Boolean Logic Instructions......Page 104
2.9 Bit Test and Manipulate Instruction......Page 105
2.10 Program Execution Time......Page 106
2.11 The Multiply-and-Accumulate (emacs) Instruction......Page 108
2.12 Summary......Page 109
2.13 Exercises......Page 110
3.1 Objectives......Page 112
3.2.1 Software Development Tools......Page 113
3.2.3 Types of HCS12 Demo Boards......Page 114
3.3 The Dragon12-Plus Demo Board......Page 115
3.4 The D-Bug12 Monitor......Page 116
3.4.1 The D-Bug12 Operating Modes......Page 117
3.4.2 EVB Mode......Page 118
3.5 Using a Demo Board with the D-Bug12 Monitor......Page 119
3.5.2 Communicating with the Demo Board......Page 121
3.5.3 Using the D-Bug12 Commands......Page 124
3.5.5 Assembling the Program......Page 133
3.5.6 Downloading the S-Record File onto the Demo Board for Execution......Page 134
3.5.7 Running and Debugging the Program......Page 136
3.6.2 The Jump-to-EEPROM Mode......Page 140
3.6.3 The Bootloader Mode......Page 141
3.7.2 Logical Errors......Page 143
3.8.1 Building a Software Project Using CodeWarrior......Page 148
3.8.2 Project Setup......Page 149
3.8.3 Source Code Entering......Page 150
3.8.4 Project Build......Page 156
3.8.5 Program Debugging......Page 157
3.9 BDM Serial Interface......Page 162
3.10 The BDM-Based Debugger......Page 164
3.11 Summary......Page 165
3.12 Lab Exercises and Assignments......Page 167
4.1 Objectives......Page 170
4.3 Stack......Page 171
4.4 What Is a Subroutine?......Page 173
4.5.1 Parameter Passing......Page 176
4.5.4 Saving the CPU Registers......Page 177
4.6 The Stack Frame......Page 178
4.6.1 Subroutines with Local Variables in Stack......Page 179
4.6.2 Bubble Sort......Page 182
4.6.3 Binary Search Subroutine......Page 186
4.7.1 Subroutine for Performing Multiple-Byte Division......Page 189
4.7.2 Finding the Square Root......Page 192
4.7.3 Subroutine for Prime Testing......Page 195
4.8 Using the D-Bug12 Functions to Perform I/O Operations......Page 198
4.8.2 Descriptions of Callable Functions......Page 199
4.8.3 Using the D-Bug12 Functions......Page 206
4.9 Subroutines for Creating Time Delay......Page 209
4.10.1 Addressing the I/O Port Register......Page 210
4.10.2 I/O Port Direction Configuration......Page 211
4.10.3 I/O Port Data Register......Page 212
4.11.1 Interfacing with LEDs......Page 213
4.11.2 Interfacing with Seven-Segment Displays......Page 215
4.11.3 Generating a Digital Waveform Using I/O Pins......Page 219
4.11.4 Interfacing with DIP Switches......Page 220
4.12.1 What to Do When the Program Gets Stuck......Page 221
4.12.3 General Debugging Strategy......Page 222
4.13 Summary......Page 223
4.14 Exercises......Page 225
4.15 Lab Exercises and Assignments......Page 227
5.1 Objectives......Page 230
5.2 Introduction to C......Page 231
5.3.3 Constants......Page 232
5.3.4 Arithmetic Operators......Page 233
5.3.5 Bitwise Operators......Page 234
5.3.6 Relational and Logical Operators......Page 235
5.4 Control Flow......Page 236
5.4.3 Multiway Conditional Statement......Page 237
5.4.5 For-Loop Statement......Page 238
5.4.8 Goto Statement......Page 239
5.5 Input and Output......Page 240
5.6 Functions and Program Structure......Page 241
5.6.1 Function Prototype......Page 243
5.7.1 Pointers and Addresses......Page 244
5.7.2 Arrays......Page 245
5.7.4 Passing Arrays to a Function......Page 246
5.7.6 Structures......Page 247
5.8 Writing C Programs to Perform Simple I/O......Page 249
5.9.1 Automatic, External, Static, and Volatile......Page 252
5.9.2 Scope Rules......Page 253
5.9.3 Type Casting......Page 254
5.10.1 Issue in Accessing Peripheral Registers......Page 255
5.11.1 Entering C Programs in CodeWarrior......Page 256
5.11.2 Creating a New Project......Page 259
5.11.3 Adding Source Code to the Project......Page 263
5.11.4 Building the Project......Page 265
5.11.5 Executing and Debugging the Project with CodeWarrior......Page 266
5.12 Using the ImageCraft C Compiler......Page 268
5.12.1 Starting the ICC12 IDE......Page 269
5.12.3 Adding Files to the Project......Page 270
5.12.4 Building the Project......Page 271
5.12.5 Executing and Debugging the Program with the ICC12 IDE......Page 273
5.13.1 General Guidelines to Comments......Page 277
5.13.3 Function (Subroutine) Documentation......Page 278
5.13.4 Code Appearance......Page 279
5.13.5 Naming of Variables, Constants, and Functions......Page 280
5.14 Tips for C Program Debugging......Page 281
5.15 Summary......Page 282
5.16 Exercises......Page 283
5.17 Lab Exercises and Assignments......Page 284
6.1 Objectives......Page 286
6.2.1 What Is an Interrupt?......Page 287
6.2.3 Interrupt Maskability......Page 288
6.2.5 Interrupt Service......Page 289
6.2.7 Interrupt Programming......Page 290
6.3 Resets......Page 291
6.4.1 Maskable Interrupts......Page 292
6.4.2 Nonmaskable Interrupts......Page 295
6.4.3 Interrupts in D-Bug12 EVB Mode......Page 296
6.5.1 Interrupt Programming in CodeWarrior......Page 299
6.5.2 Interrupt Programming in ImageCraft ICC12......Page 300
6.5.3 Interrupt Programming in EGNU IDE......Page 301
6.6 Clock and Reset Generation Block (CRG)......Page 302
6.6.2 CRG Signals......Page 303
6.6.4 Phase-Locked-Loop (PLL)......Page 305
6.6.5 System Clock Generation......Page 309
6.6.6 Clock Monitor......Page 311
6.7 Real-Time Interrupt......Page 312
6.8 Computer Operating Properly......Page 317
6.9.1 The Wai Instruction......Page 318
6.10.2 External Reset......Page 319
6.11 HCS12 Operation Modes......Page 320
6.11.2 Special Operation Modes......Page 321
6.12 Summary......Page 322
6.13 Exercises......Page 323
6.14 Lab Exercises and Assignments......Page 324
7.1 Objectives......Page 328
7.4 I/O Synchronization......Page 329
7.5.1 Port A and Port B......Page 330
7.5.2 Port E......Page 331
7.5.3 Port K......Page 334
7.5.4 Port T......Page 335
7.5.5 Port S......Page 336
7.5.6 Port M......Page 337
7.5.7 Ports H, J, and P......Page 338
7.5.9 Port L......Page 340
7.5.10 Ports U, V, and W......Page 341
7.6.1 Voltage-Level Compatibility......Page 342
7.6.2 Current Drive Capability......Page 344
7.7 Liquid Crystal Displays (LCDs)......Page 347
7.8 The HD44780U LCD Controller......Page 348
7.8.3 Character Generator RAM (CGRAM)......Page 350
7.8.4 Registers......Page 353
7.8.5 Instruction Description......Page 354
7.8.6 Interfacing the HD44780U to the HCS12 Microcontroller......Page 355
7.9 Interfacing Parallel Ports to a Keypad......Page 363
7.9.1 Keypad Scanning......Page 364
7.9.2 Keypad Debouncing......Page 365
7.9.3 ASCII Code Lookup......Page 366
7.10 Using the D/A Converter......Page 368
7.10.1 The 8-Bit AD7302 DAC......Page 370
7.10.2 Interfacing the AD7302 with the HCS12......Page 371
7.11.1 Principles of Rotation for the Stepper Motor......Page 372
7.11.2 Stepper Motor Drivers......Page 375
7.12.2 Key-Wake-Up Initialization......Page 380
7.12.3 Considerations for the Key-Wake-Up Application......Page 381
7.13 Summary......Page 383
7.14 Exercises......Page 384
7.15 Lab Exercises and Assignments......Page 385
8.1 Objectives......Page 388
8.2 Why Are Timer Functions Important?......Page 389
8.3 Standard Timer Module......Page 390
8.4.1 Timer System Control Register 1 (TSCR1)......Page 391
8.4.2 Timer System Control Register 2 (TSCR2)......Page 392
8.5.1 Input-Capture/Output-Compare Selection......Page 393
8.5.3 Registers Associated with Input-Capture......Page 394
8.5.4 Input-Capture Applications......Page 395
8.6 Output-Compare Function......Page 402
8.6.2 Registers Related to the Output-Compare Function......Page 403
8.6.3 Applications of the Output-Compare Function......Page 404
8.6.4 Making Sound Using the Output-Compare Function......Page 411
8.6.5 Using OC7 to Control Multiple Output-Compare Functions......Page 418
8.6.6 Forced Output-Compare......Page 420
8.7 Pulse Accumulator......Page 421
8.7.1 Signal Pins......Page 422
8.7.3 Interrupt Sources......Page 423
8.7.4 Registers Related to Pulse Accumulator......Page 424
8.7.5 Operations of the Enhanced Pulse Accumulators......Page 426
8.7.6 Pulse Accumulator Applications......Page 427
8.8 Modulus Down Counter......Page 432
8.8.2 Using the Modulus Down Counter to Generate Time Delays......Page 434
8.9 Enhanced Capture Timer (ECT) Module......Page 435
8.9.2 Why the Enhanced Capture Timer Module?......Page 436
8.9.3 The Operation of the Enhanced Input-Capture Function......Page 437
8.10.1 PWM Clock Select......Page 441
8.10.2 PWM Channel Timers......Page 445
8.10.3 PWM Waveform Properties......Page 446
8.11 DC Motor Control......Page 455
8.11.2 Feedback......Page 456
8.12 Summary......Page 459
8.13 Exercises......Page 461
8.14 Lab Exercises and Assignments......Page 462
9.1 Objectives......Page 468
9.3.1 TIA-232E Electrical Specification......Page 469
9.3.2 TIA-232E Functional Specification......Page 470
9.3.3 TIA-232E Mechanical Specification......Page 473
9.3.4 TIA-232E Procedural Specification......Page 474
9.3.5 Data Format......Page 476
9.4 The HCS12 Serial Communication Interface......Page 478
9.5 SCI Baud Rate Generation......Page 479
9.6 The SCI Operation......Page 480
9.6.1 Character Transmission......Page 481
9.6.5 Receiver Wake-Up......Page 485
9.6.7 Loop Operation......Page 487
9.8 Flow Control of USART in Asynchronous Mode......Page 488
9.9 Interfacing SCI with TIA-232......Page 489
9.10 Summary......Page 494
9.11 Exercises......Page 495
9.12 Lab Exercises and Assignments......Page 496
10.1 Objectives......Page 498
10.2.1 SPI Signal Pins......Page 499
10.3 Registers Related to the SPI Subsystem......Page 500
10.4.1 Transmission Formats......Page 503
10.4.3 Mode Fault Error......Page 505
10.4.4 Low-Power Mode Options......Page 506
10.5 SPI Circuit Connection......Page 507
10.6 Configuration of and Data Transfer in SPI......Page 509
10.8 The 74HC595 Shift Register......Page 512
10.9.2 Temperature Data Format......Page 516
10.9.3 Serial Bus Interface......Page 517
10.9.4 Internal Register Structure......Page 519
10.10.1 Signal Pins......Page 523
10.10.3 MCP4922 Output Voltage......Page 524
10.10.5 Interfacing the MCP4922 with the HCS12......Page 525
10.11.1 The Organization of Matrix LED Displays......Page 529
10.11.3 Connection Method......Page 530
10.11.4 Dimension of Matrix LED Displays......Page 531
10.12.2 Internal Registers......Page 532
10.12.3 Blinking Operation......Page 540
10.12.4 Choosing Values for R[sub(SET)] and C[sub(SET)]......Page 541
10.13 Summary......Page 547
10.14 Exercises......Page 548
10.15 Lab Exercises and Assignments......Page 552
11.1 Objectives......Page 554
11.2.2 I[sup(2)]C Signal Levels......Page 555
11.2.3 I[sup(2)]C Data Transfer Signal Components......Page 556
11.2.4 Synchronization......Page 558
11.2.5 Arbitration......Page 559
11.2.6 Data Transfer Format......Page 560
11.2.7 7-Bit Addressing......Page 561
11.2.8 10-Bit Addressing......Page 563
11.3 An Overview of the HCS12 I[sup(2)]C Module......Page 566
11.4.2 The I[sup(2)]C Control Register (IBCR)......Page 567
11.4.3 The I[sup(2)]C Status Register (IBSR)......Page 568
11.4.5 The I[sup(2)]C Frequency Divider Register (IBFD)......Page 570
11.5.1 Generation of the Start Condition......Page 574
11.5.2 I[sup(2)]C Data Transfer in Master Mode......Page 575
11.6 The Serial Real-Time Clock DS1307......Page 577
11.6.1 Signal Functions......Page 578
11.6.4 The DS1307 Control Register......Page 579
11.6.5 Data Transfer......Page 580
11.6.6 Circuit Connection......Page 581
11.7 The Digital Thermometer and Thermostat DS1631A......Page 590
11.7.2 Functional Description......Page 591
11.7.3 DS1631A Registers......Page 592
11.7.4 The DS1631A Operation......Page 593
11.7.6 I[sup(2)]C Communication with DS1631A......Page 594
11.8.2 Device Addressing......Page 603
11.8.3 Write Operation......Page 604
11.8.4 Acknowledge Polling......Page 605
11.8.5 Read Operation......Page 606
11.8.6 Circuit Connection Between the I[sup(2)]C Master and the 24LC08B......Page 607
11.9 Summary......Page 611
11.10 Exercises......Page 613
11.11 Lab Exercises and Assignments......Page 614
12.1 Objectives......Page 616
12.2.2 Analog Voltage and Digital Code Characteristic......Page 617
12.2.3 A/D Conversion Algorithms......Page 619
12.2.5 Scaling Circuit......Page 621
12.2.6 Voltage Translation Circuit......Page 622
12.3 The HCS12 A/D Converter......Page 623
12.3.2 Registers Associated with A/D Converter......Page 625
12.4.1 Analog Input Multiplexer......Page 632
12.4.4 Input Channel Wraparound......Page 633
12.4.5 FIFO Mode......Page 634
12.4.8 ATD Operation Modes......Page 635
12.5 Procedure for Performing A/D Conversion......Page 636
12.6 Using the Temperature Sensor TC1047A......Page 640
12.7 Using the IH-3605 Humidity Sensor......Page 646
12.8 Measuring Barometric Pressure......Page 649
12.9 Summary......Page 652
12.10 Exercises......Page 653
12.11 Lab Exercises and Assignments......Page 656
13.1 Objectives......Page 658
13.2.2 General Characteristics of CAN......Page 659
13.3.1 Data Frame......Page 661
13.3.3 Error Frame......Page 664
13.3.4 Overload Frame......Page 665
13.3.5 Interframe Space......Page 666
13.3.8 Bitstream Encoding......Page 667
13.5.1 CAN Node Status......Page 668
13.6.1 Nominal Bit Time......Page 669
13.7.1 Resynchronization Jump Width......Page 670
13.8 Overview of the HCS12 CAN Module......Page 671
13.9.1 MSCAN Control Registers......Page 673
13.9.2 MSCAN Message Buffers......Page 683
13.9.3 Transmit Storage Structure......Page 687
13.9.4 Receive Storage Structure......Page 688
13.9.5 Identifier Acceptance Filter......Page 689
13.9.6 MSCAN Clock System......Page 690
13.9.7 MSCAN Interrupt Operation......Page 691
13.10 Physical CAN Bus Connection......Page 692
13.10.1 The MCP2551 CAN Transceiver......Page 693
13.10.2 Interfacing the MCP2551 to the HCS12 CAN Devices......Page 695
13.11 Setting the CAN Timing Parameters......Page 696
13.12 MSCAN Configuration......Page 700
13.13.1 MSCAN Data Transmission Programming......Page 703
13.13.2 MSCAN Data Reception Programming......Page 706
13.13.3 Putting It All Together......Page 708
13.14 Summary......Page 712
13.15 Exercises......Page 713
13.16 Lab Exercises and Assignments......Page 714
14.1 Objectives......Page 718
14.3 Internal Resource Remapping......Page 719
14.3.1 Register Block Mapping......Page 720
14.3.4 Miscellaneous Memory Mapping Control......Page 721
14.4 Expanded Memory Mapping......Page 724
14.5.2 Flash Memory Protection......Page 726
14.5.3 Flash Memory Related Registers......Page 729
14.5.5 Unsecuring the Microcontroller......Page 733
14.5.7 Flash Memory Programming and Erasure Algorithms......Page 735
14.6 The On-Chip EEPROM Memory......Page 741
14.6.1 EEPROM Memory Map......Page 742
14.6.2 EEPROM Associated Registers......Page 743
14.6.3 EEPROM Protection......Page 744
14.6.5 Programming and Erasure of EEPROM......Page 745
14.7.1 HCS12 Pins for External Memory Interfacing......Page 750
14.7.2 Waveforms of Bus Signals......Page 752
14.7.3 Bus Transactions......Page 754
14.7.4 Bus Multiplexing......Page 755
14.7.5 The HCS12 Bus Cycles......Page 756
14.8.1 Memory Space Assignment......Page 759
14.8.2 Address Decoder Design......Page 760
14.9.1 The K6R1008C1D......Page 761
14.9.2 The AT28C010 EEPROM......Page 762
14.10 Example of External Memory Expansion for the HCS12......Page 769
14.10.1 Memory Space Assignment......Page 771
14.10.2 Address Latch......Page 772
14.10.3 Address Decoder Design......Page 773
14.10.5 Example HCS12 External Memory Design......Page 774
14.11 Summary......Page 778
14.13 Lab Exercise and Assignment......Page 779
A: Instruction Set Reference......Page 780
B: Number System Issue......Page 802
C: Summary of Features of HCS12 Devices......Page 814
D: Tutorial for Using the AsmIDE......Page 818
E: Tutorial for Using the EGNU to Develop C Programs......Page 828
F: Music Note Frequencies......Page 846
G: Vector Table Template in C for the HCS12 (used in CodeWarrior)......Page 850
References......Page 852
Glossary......Page 854
Index......Page 864