Tải bản đầy đủ

Giáo trình bài tập part 2 c programming essentials

03-Jun-11

This presentation contains illustrations from the book
‘Programming 8-bit PIC Microcontrollers in C’

Programming
8-bit PIC
Microcontrollers
in C
Martin Bates
Elsevier 2008

Part 1 Microcontroller Systems
describes in detail the internal architecture and interfaces
available in the PIC 16F887A, a typical PIC chip, as well as
outlining the main features of the development system
Part 2 C Programming Essentials
provides simple example programs for the microcontroller
which show the basic principles of C programming,
and interfacing to basic I/O devices
Part 3 C Peripheral Interfaces

provides example programs for operating PIC chips with a
full range of peripherals, using timers and interrupts

Figure 1.1

Part 1

MICROCONTROLLER
SYSTEMS

Elements of a digital controller

Input
Peripherals

User
input

Program
download

Output
Peripherals

CPU
Central
Processing
Unit

ROM
Read Only
Memory

User
output

RAM
Read & Write
Memory


The microcontroller contains all these elements in one chip

Figure 1.2

16F877 pin-out

Figure 1.3

PIC 16F877 MCU Block diagram
Flash
ROM
Program
Memory
8192
x 14 bits

Program Counter
(13 bits)
Address
Stack
13 bits
x8
levels

0000 – 1FFF
Instructions

RAM
File
Registers
368
X 8 bits
000-1FF

Instruction Register

File Address
Program address
Working (W)
Register

Literal

File Select
Register

Arithmetic & Logic
Unit

Status bits
Status (Flag)
Register

Opcode

Instruction
Decode &
CPU control

Data Bus
(8 bits)
EEPROM
256 bytes

MCU
control
lines

Ports, Timers
ADC, Serial I/O

Timing control
Clock

Reset
Port

A

B

C

D

E

The microcontroller pins have multiple functions
Shows the main parts of the chip in simplified form

1


03-Jun-11

Table 1.1

PIC16F877 simplified file register map

Bank 0 (000 – 07F)

Bank 1 (080 – 0FF)

Bank 2 (100-180)

Address

Register

Address

Register

Address

Register

Address

Register

000h

Indirect

080h

Indirect

100h

Indirect

180h

Indirect

001h

Timer0

081h

Option

101h

Timer0

181h

Option

002h

PC Low

082h

PC Low

102h

PC Low

182h

PC Low

003h

Status Reg

083h

Status Reg

103h

Status Reg

183h

Status Reg

004h

File Select

084h

File Select

104h

File Select

184h

File Select

005h

Port A data

085h

PortA direction

105h

-

185h

-

006h

Port B data

086h

PortB direction

106h

Port B data

186h

PortB direction

007h

Port C data

087h

PortC direction

107h

-

187h

-

008h

Port D data

088h

PortD direction

108h

-

188h

-

009h

Port E data

089h

PortE direction

109h

-

189h

00Ah

PC High

08Ah

PC High

10Ah

PC High

18Ah

PC High

00Bh

Interrupt Control

08Bh

Interrupt Control

10Bh

Interrupt Control

18Bh

Interrupt Control

00Ch
to
01Fh

20 Peripheral
Control
Registers

08Ch
to
09Fh

20 Peripheral
Control
Registers

020h
to
06Fh
070h
to
07Fh

80 General
Purpose
Registers
16 Common
Access GPRs

0A0h
to
0EFh
0F0h
to
0FFh

80 General
Purpose
Registers
Accesses
70h – 7Fh

10Ch
to
10Fh
110h
to
16Fh

4 Peripheral
Control
Registers
96 General
Purpose
Registers

18Ch
to
18Fh
190h
to
1EFh

4 Peripheral
Control
Registers
96 General
Purpose
Registers

170h
to
17Fh

Accesses
70h – 7Fh

1F0h
to
1FFh

Accesses
70h – 7Fh

Figure 1.4

Write TRIS bit

CPU Data Bus
Write data bit

Read data
bit

Table 1.2
Data
word
(bits)

Program
memory
(bytes)

Typical
Instruction
Set

Speed
MIPS

=6

8

<= 512

33 x 12
bits

<= 2

=8

8

<= 2 KB

12 / 14 bits

<= 5

<= 64

8

<= 14 KB

35 x 14
bits

<= 5

18FXXXX

<=
100

8

<= 128 KB

75 x 16
bits

<= 16

24FXXXX

<=
100

16

<= 128 KB

MCU

Output
Data
Latch

Pins

10FXXX

12FXXX

16FXXX

Comment

Low pin count, small form factor,
cheap
No EEPROM, none low power,
assembler program
Low pin count, small form factor,
cheap
EEPROM, 10-bit ADC, some low
power, assembler
Mid-range, UART, I2C, SPI
many low power, C or assembler
program

-

I/O pin operation

Data
Direction
Latch

PIC microcontroller types

Bank 3(180-1FF)

Figure 1.5

Tri-state
Output
Enable
Output
Current
Driver

Clock
Source
Select

External Pulse

= 16

Prescaler
(clock
divide)

Capture
register

Binary Counter

Compare
register

Input
Data
Latch

Power range, 3V supply, no
EEPROM,
data RAM < 8 KB, C program

General Timer Operation
Capture
signal

Instruction
Clock

76 x 24
bits

High range, CAN, USB
J series 3V supply, C program

Post-scaler
(output
divide)

Timer
Overflow/
Timeout
(Interrupt)
Flag

Match flag

A binary counter is used as a timer when driven from the clock

Analogue input
multiplexer

The pin can be set for input or output data transfer

Figure 1.6

ADC operation

Figure 1.7

Comparator operation

Vc+
Input volts 0-Vf

ANx
Analogue
to Digital
Converter

Reference volts, Vf

Vref+

Setup ADC
Read ADC

Vc-

Compartor
status bit
Vc+ > Vc-

8-bit or 16-bit
integer result

The comparator simply sets a bit if one input is higher than the other
The ADC converts an analog input into a binary code

2


03-Jun-11

Table 1.3
Figure 1.8

Parallel Slave Port operation

Interrupts sources in the PIC 16F877

Interrupt Source

Interrupt trigger event

Timer 0

Timer 0 register overflow

CCS C Interrupt label
INT_TIMER0

Timer 1

Timer 1 register overflow

INT_TIMER1

CCP 1

Timer 1 capture or compare detected

INT_CCP1

Timer 2

Timer 2 register overflow

INT_TIMER2

CCP2

Timer 2 capture or compare detected

INT_CCP2

TIMERS

Chip select
Read
Write

Interrupt
Parallel
Slave
Port

PORTS

EXTERNAL
Data x 8

INTERNAL
Data x 8

RB0/INT pin

Change on single pin RB0

INT_EXT

Port B pins

Change on any of four pins RB4 – RB7

INT_RB

Parallel Slave Port

Data received at PSP (write input active)

INT_PSP

Analog Converter

A/D conversion completed

INT_AD

Analog Comparator

Voltage compare true

INT_COMP

SERIAL

The PSP allows an external data bus to be connected to the MCU

UART Serial Port

Received data available

INT_RDA

UART Serial Port

Transmit data buffer empty

INT_TBE

SPI Serial Port

Data transfer completed (read or write)

INT_SSP

I2C Serial Port

Interface activity detected

INT_SSP

I2C Serial Port

Bus collision detected

INT_BUSCOL

MEMORY
EEPROM

Figure 1.9

Timer Interrupt Process

Non-volatile data memory write complete

Figure 1.10

INT_EEPROM

USART RS232 Signal

Program Execution

1
Start counter
statement

2
Run
Counter
until
overflow

HOST PC
PIC MCU

Program Execution
3
Timeout
Interrupt

TX1 Transmit

4
Jump to
ISR

RX2

Line
Driver
Interface

RX1 Receive

7
Continue

+/- 12V
TX2
COM PORT
Ground

Ground
5
Time-out
Process
(Interrupt
Service
Routine)

6
Return
from
Interrupt

Time-out forces the program to be suspended and the ISR executed

Figure 1.11

Line drivers convert the signal to a bipolar, higher voltage

Figure 1.12

Typical USART RS232 signal

SPI Connections

Master

Bit period

Serial Data Out, SDO
Serial Data In, SDI
Serial Clock, SCK

1

Slave 1

0

Time
Idle

Start
Bit

Bit
0

Bit
1

Bit
2

Bit
3

Bit
4

Bit
5

Bit
6

Bit
7

Stop
Bit

Slave Select
Outputs

The data bits are timed from the falling edge of the start bit

Slave 2

SDO
SDI
SCK

SDO
SDI
SCK

!SS

!SS

SS1
SS2
SS3

SPI uses hardware slave selection and separate clock

3


03-Jun-11

Figure 1.13

+5V
7

SDO/SDI

6

5

4

3

2

I2C Connections

Figure 1.14

SPI Signals

1

0

Master

Slave1

Slave2

etc

Data bits
SDA
SCL

SCK

Clock

Slave selection uses addresses issued by the Master
Each data bit is transferred on the falling edge of the clock

Listing 1.1

A simple C program

I2C Signals

Figure 1.15

/*
OUTBYTE.C
Start
SDA

Acknowledge

Address / Data bits
7

6

5

4

3

2

1

0

MPB

#include "16F877A.h"
void main()
{
output_D(255);
}

SCL

Data is strobed in using the master clock, and reception
is acknowledged by the slave by taking the data line low

Listing 1.2

Program hex file

2-1-07

V1.0

*/
// MCU select
// Main block
// Switch on outputs

This minimal program outputs a binary code to Port D

Figure 1.16

Screenshot of MPLAB Project

:1000000000308A0004280000840183131F30830518
:1000100083161F149F141F159F1107309C00880121
:08002000FF3083128800630029
:02400E00733FFE
:00000001FF
;PIC16F877A

The machine code is downloaded as a binary file to the chip

The C program is compiled and tested in simulation mode

4


03-Jun-11

Figure 1.17

Figure 1.18

PICkit2 demo system hardware

ICSP target board connections
Application Board
Reset
10k

ICSP
Interface

MCU
Vpp/!MCLR
Vdd
Vss
PGD
PGC

1
2
3
4
5
Vdd
Vss
Board +5V Supply

Connections to the target chip for programming
Basic hardware for downloading the program to a test board

Figure 1.19

PICkit2 programmer dialogue

On-screen window for program downloading to target chip

Figure 1.21

Host PC
MPLAB
development
system
+ C Compiler

ICD2 program and debug system

USB

ICD2
interface

6-WAY
connector

Figure 1.20

Microchip ICD2 module

ICD2 provides in-circuit debugging

Figure 1.22

ICD debugging windows

PIC MCU
Target
System

Block diagram of the ICD2 programming and in-circuit debugging system

User interface for in-circuit programming & debugging

5



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×