CONTENTS:-
1) PIC microcontrollers
PIC 16F73 features
Pin diagram of PIC16F73
Pin description of PIC16F73
Core Architecture
2) Programming of PIC
Compiler Used-mikroC
Features
Projects
Functionality
3) Programming and Interfacing
Project no. 1- LED interfacing and its blinking(port pro-
gramming)
Project no. 2- seven segment interfacing and display
Project no. 3- Interfacing and control of stepper motor with
PIC 16F73
Project no. 4-LCD interfacing and display with PIC 16F73
Project no. 5-Builtin ADC of PIC16F73(Temperature Mon-
itoring)
Project no. 6-To study switching action of PIC pins.
Project no. 7-Serial communication [b/w PC & Microcon-
troller]
PIC
MICROCONTROLLER
PIC 16 SERIES-PIC16F73
PIC is a family of Harvard architecture microcontrollers made by Microchip
Technology, derived from the PIC1640 originally developed by General Instrument's
Microelectronics Division. The name PIC initially referred to "Peripheral Interface
Controller".
It is available in different configurations viz 8bit,16 bit,32 bit with instructions set as
given below :
Under 8 bit comes-PIC10 xxxx, PIC12 xxxx, PIC16 xxxx, PIC18 xxxx.(12 bit
instruction set)
Under 16 bit comes-PIC24H,DSPIC30,DSPIC33. (14 bit instruction set)
Under 32 bit comes-PIC32xxxx. (16 bit instruction set)
PICs are popular with developers and hobbyists alike due to their low cost, wide
availability, large user base, extensive collection of application notes, availability of
low cost or free development tools, and serial programming (and re-programming
with flash memory) capability.
Special Microcontroller Features:
• High performance RISC CPU.
• Only 35 single word instructions to learn.
• All single cycle instructions except for program branches which are two-cycle.
• Operating speed: DC - 20 MHz clock input DC - 200 ns instruction cycle.
• Up to 8K x 14 words of FLASH Program Memory, Up to 368 x 8 bytes of Data
Memory (RAM).
• Watchdog Timer (WDT) with its own on-chip RC oscillator for reliable operation.
• In-Circuit Serial Programming (ICSP) via two pins.
Peripheral Features:
• Timer0: 8-bit timer/counter with 8-bit prescaler.
• Timer1: 16-bit timer/counter with prescaler, can be incremented during SLEEP via
external crystal/clock.
• Timer2: 8-bit timer/counter with 8-bit period register,
• 8-bit, up to 8-channel Analog-to-Digital converter.
• Synchronous Serial Port (SSP) with SPI (Master mode) and I2C(Slave).
• Universal Synchronous Asynchronous Receiver Transmitter (USART/SCI).
PIN DIAGRAM
PIN DESCRIPTION
MCLR-(pin 1)
PIC16F7X devices have a noise filter in the MCLR Reset path. The filter will detect
and ignore small pulses. It should be noted that a WDT Reset does not drive MCLR
pin low. The behavior of the ESD protection on the MCLR pin has been altered from
previous devices of this family. Voltages applied to the pin that exceed its
specification can result in both MCLR Resets and excessive current beyond the
device specification during the ESD event. For this reason, Microchip recommends
that the MCLR pin no longer be tied directly to VDD.
RESET
The PIC16F7X differentiates between various kinds of RESET:
Power-on Reset (POR) MCLR Reset during normal operation MCLR Reset during SLEEP WDT Reset (during normal operation) WDT Wake-up (during SLEEP) Brown-out Reset (BOR)Some registers are not affected in any RESET condion. Their status is unknown on
POR and unchanged n any other RESET. Most other registers are reset to a RESET
state” on Power-on Reset (POR), on the MCLR and WDT Reset, on MCLR Reset
during LEEP, and Brown-out Reset (BOR). They are not affected by a WDT Wake-
up, which is viewed as the resumption of normal operation. The TO and PD bits are
set or cleared differently in different RESET situations, as indicated
PORTA –(pin 2 to 7)and the TRISA Register-
PORTA is a 6-bit wide, bi-directional port. The corresponding data direction register
is TRISA. Setting a TRISA bit (= ‘1’) will make the corresponding PORTA pin an
input (i.e., put the corresponding output driver in a Hi-Impedance mode). Clearing a
TRISA bit (= ‘0’) will make the corresponding PORTA pin an output (i.e., put the
contents of the output latch on the selected pin).
Reading the PORTA register reads the status of the pins, whereas writing to it will
write to the port latch. All write operations are read-modify-write operations.
Therefore, a write to a port implies that the port pins are read, the value is modified
and then written to the port data latch.
GND –(pin 8)
Provide Ground to it.
OSC1/CLKIN-(pin 9)
Oscillator crystal input/external clock source input
OSC2/CLKOUT-(pin 10)
Oscillator crystal output. Connects to crystal or resonator in CrystalOscillator mode. In RC mode, the OSC2 pin outputs CLKOUTwhich has 1/4 the frequency of OSC1, and denotes the instructioncycle rate.
OSCILLATOR TYPES
The PIC16F7X can be operated in four different oscillator modes:
LP Low Power Crystal XT Crystal/Resonator HS High Speed Crystal/Resonator RC Resistor/Capacitor
PORTC and the TRISC Register(pin 11 to 18)
PORTC is an 8-bit wide, bi-directional port. The corresponding data direction
register is TRISC. Setting a TRISC bit (= ‘1’) will make the corresponding PORTC
pin an input (i.e., put the corresponding output driver in a Hi-Impedance mode).
Clearing a TRISC bit (= ‘0’) will
make the corresponding PORTC pin an output (i.e., put the contents of the output
latch on the selected pin).
PORTC is multiplexed with several peripheral functions PORTC pins have Schmitt
Trigger input buffers. When enabling peripheral functions, care should be taken in
defining TRIS bits for each PORTC pin.
Vss(pin 19)
Ground reference for logic and I/O pins
Vdd(pin 20)
Positive supply for logic and I/O pins
PORTB and the TRISB Register(pin 21 to 28)
PORTB is an 8-bit wide, bi-directional port. The corresponding data direction
register is TRISB. Setting a TRISB bit (= ‘1’) will make the corresponding PORTB
pin an input (i.e., put the corresponding output driver in a Hi-Impedance mode).
Clearing a TRISB bit (= ‘0’) will make the corresponding PORTB pin an output
(i.e., put the contents of the output latch on the selected pin).
Each of the PORTB pins has a weak internal pull-up. A single control bit can turn on
all the pull-ups. The weak pull-up is automatically turned off when the port pin is
configured as an output. The pull-ups are disabled on a Power-on Reset.
CORE ARCHITECTURE
Figure 2.1: Showing a typical microcontroller device and its different subunits
The PIC architecture is distinctively minimalist. It is characterized by the following
features:
Separate code and data spaces (Harvard architecture)
A small number of fixed length instructions
Most instructions are single cycle execution (4 clock cycles), with single delay
cycles upon branches and skips
A single accumulator (W), the use of which (as source operand) is implied (i.e. is
not encoded in the opcode)
All RAM locations function as registers as both source and/or destination of
math and other functions.
A hardware stack for storing return addresses
A fairly small amount of addressable data space (typically 256 bytes), ex-
tended through banking
Data space mapped CPU, port, and peripheral registers
The program counter is also mapped into the data space and writable (this is
used to implement indirect jumps).
Unlike most other CPUs, there is no distinction between memory space and register
space because the RAM serves the job of both memory and registers, and the RAM
is usually just referred to as the register file or simply as the registers
PROGRAMMING OF PIC
COMPILER USED -
mikroC
Introduction to mikroC
mikroC is a powerful, feature rich development tool for PICmicros. It is designed to provide the programmer with the easiest possible solution for developing applications for embedded systems, without compromising performance or control.
mikroC IDE
PIC and C fit together well: PIC is the most popular 8-bit chip in the world, used in a wide variety of applications, and C, prized for its efficiency, is the natural choice for developing embedded systems. mikroC provides a successful match featuring highly advanced IDE, ANSI compliant compiler, broad set of hardware libraries, comprehensive documentation, and plenty of ready-to-run examples.
Features
mikroC allows you to quickly develop and deploy complex applications:
Write your C source code using the built-in Code Editor (Code and Parameter Assistants, Syntax Highlighting, Auto Correct, Code Templates, and more…)
Use the included mikroC libraries to dramatically speed up the development: data acquisition, memory, displays, conversions, communications… Practi-cally all P12, P16, and P18 chips are supported.
Monitor your program structure, variables, and functions in the Code Ex-plorer.
Generate commented, human-readable assembly, and standard HEX compati-ble with all programmers.
Inspect program flow and debug executable logic with the integrated Debug-ger.
Get detailed reports and graphs: RAM and ROM map, code statistics, assem-bly listing, calling tree, and more…
We have provided plenty of examples for you to expand, develop, and use as building bricks in your projects. Copy them entirely if you deem fit – that’s why we included them with the compiler.
Projects
mikroC organizes applications into projects, consisting of a single project file (extension .ppc) and one or more source files (extension .c). You can compile source files only if they are part of a project.
The project file carries the following information:
project name and optional description, target device, device flags (config word), device clock,
New Project
The easiest way to create project is by means of New Project Wizard, drop-down menu Project › New Project. Just fill the dialog with desired values (project name and description, location, device, clock, config word) and mikroC will create the appropriate project file . Also, an empty source file named after the project will be created by default. mikroC does not require you to have source file named same as the project, it’s just a matter of convenience.
Edit Project
Later, you can change project settings from the drop-down menu Project › Edit Project. You can rename the project, modify its description, change chip, clock, config word, etc.
Also mikroC has some pre defined functions:
Commonly used is
1). Delay_ms(time)-it provides a delay of spcified time in ms.
Its internal code is similar to code given below:
Void delay_ms()
{int I;
While (i !=0)
{
i--;
}
Also PIC has a internal TRIS register which controls the flow of insructions from the corresponding port.
PROJECT NO-1
LED INTERFACING AND ITS BLINKING(PORT
PROGRAMMING)
the interfacing of LED is shown in the figure above.it is given Vcc through resistors
of 330E.
also a darlington pair IC is also used i.e.ULN 2803 which shift the dc level of volage
coming from port of pic microcontroller.
Now to glow the desired LED ,proper hexadecimal code for its binary is
programmed in pic.eg.to glow alternative LED’s the binary code will be10101010
and its corresponding hexadecimal code will be 0xAA.
So,0xAA is fed to controller with coding.
Also PIC has a internal TRIS register which controls the flow of insructions from the corresponding port i.ee PORT will behave as input(if =1) and as output(if=0).
CODING FOR BLINKING
void main()
{
PORTC = 0; // Initialize PORTC
TRISC = 0; // Configure PORTC as output
while(1)
{
PORTC = OxAA; // gives code 10101010 to PORTC
Delay_ms(1000); // one second delay
}}
Thus LED Blinking practical is done sucessfully.
PROJECT NO-2
SEVEN SEGMENT INTERFACING AND DISPLAY
A Seven segment display consists of seven LED’s arranged in pattern of digit like 8
We use a bcd to seven segment decoder which saves pin of microcontroller from
seven(one for each Led) to four.So we have to give bcd code for desired digit to be
displayed on it.
Now also we can display more then one seven segment display simultaneously.but it
will take a number of pins of controller.So we use two pins from controller to
control the display of seven segment one by one from same port such that it appears
to be displaying simultaneously.This is done by providing a very small delay such
that our eyes cant even detect the change over from one display to another.
CODING FOR DISPLAY
//seven segment display -common anode for 2 digit
void bcd(unsigned int x);
void delay(unsigned int k) ;
void main()
{
unsigned int i=0;
TRISB=0X00;
while(1)
{
i++;
bcd(i);
//delay_ms(20);
}}
void bcd(unsigned int x)
{
unsigned char z,y,a;
if(x<100)
{
for(a=0;a<100;a++)
{
y=(x/10)*6+x;
y=y>>4;
y=y|0xe0;
PORTB=y;
delay(250);
z=(x/10)*6+x;
z=z&0x0f;
z=z|0xd0;
PORTB=z;
delay(250);
}}}
void delay(unsigned int k)
{
while(k!=0)
{
k--;
}}
PROJECT NO-3
INTERFACING AND CONTROL OF STEPPER MOTOR WITH PIC 16F73
Stepper motor are those which rotates in steps.like all motors it is also based on
electromagnetic induction i.e. electric field produces a magnetic field whose
variation causes a torque which rotates the motor.
A stepper motor is a brushless, synchronous electric motor that can divide a full
rotation into a large number of steps. The motor's position can be controlled
precisely, without any feedback mechanism (see open loop control). Stepper motors
are similar to switched reluctance motors, which are very large stepping motors with
a reduced pole count, and generally are closed-loop commutated.
Fundamentals of Operation
Stepper motors operate much differently from normal DC motors, which rotate when voltage is applied to their terminals. Stepper motors, on the other hand, effectively have multiple "toothed" electromagnets (a.k.a. phases) arranged around a central gear-shaped piece of iron. The electromagnets are energized by an external control circuit, such as a microcontroller. To make the motor shaft turn, first one electromagnet is
given power, which makes the gear's teeth magnetically attracted to the electromagnet's teeth. When the gear's teeth are thus aligned to the first electromagnet, they are slightly offset from the next electromagnet. So when the next electromagnet is turned on and the first is turned off, the gear rotates slightly to align with the next one, and from there the process is repeated. Each of those slight rotations is called a "step." In that way, the motor can be turned a precise angle.
Now to run the motor we have to feed the binary code to turn on the current of that winding…
For pair 1st-00000011(binary)-0x03
For pair 2nd-00000110(binary)-0x06
For pair 3rd -000001100(binary)-0x0c
For pair 4th -00011000(binary)-0x09
CODE IS
#define l1 PORTB.F0
#define l2 PORTB.F1
#define l3 PORTB.F2
#define l4 PORTB.F3
void forward();
void backward();
void main()
{
PORTC=0XFF;
TRISB=0X00;
while(1)
{
forward();
delay_ms(2000);
backward();
delay_ms(2000);
}
}
void forward() //half stepping
{
unsigned char a;
for(a=0;a<10;a++)
{
l1=1; l2=0; l3=0; l4=0; delay_ms(100);
l1=0; l2=1; l3=0; l4=0; delay_ms(100);
l1=0; l2=0; l3=1; l4=0; delay_ms(100);
l1=0; l2=0; l3=0; l4=1;delay_ms(100);
}}
void backward()
{
unsigned char b;
for(b=0;b<10;b++)
{
l1=0; l2=0; l3=0; l4=1; delay_ms(100);
l1=0; l2=0; l3=1; l4=0; delay_ms(100);
l1=0; l2=1; l3=0; l4=0; delay_ms(100);
l1=1; l2=0; l3=0; l4=0; delay_ms(100);
}}
The above code will rotate the motor first in forward direction and then in reverse
direction.
Thus,stepper motor has been studied successfully.
PROJECT NO-4
LCD INTERFACING AND DISPLAY
LCD stands for Liquid Crystal Display.to run it via PIC 16F73,we need command
signals and vcc to drive it.now the signal that is required to display character is
produced by an IC which is already embedded on it.its name is HD44780.
PIN NO. NAME FUNCTION
1 Vss Ground
2 Vdd +ve supply
3 Vee contrast
4 RS Register select
5 R/W Read/Write
6 E Enable
7 D0 Data Bit 0
8 D1 Data Bit 1
9 D2 Data Bit 2
10 D3 Data Bit 3
11 D4 Data Bit 4
12 D5 Data Bit 5
13 D6 Data Bit 6
14 D7 Data Bit 7
Connections are shown as below
CODING
void main()
{
TRISB = 0; // PORTB is output
Lcd_Init(&PORTB); // Initialize LCD connected to PORTB
Lcd_Cmd(Lcd_CLEAR); // Clear display
Lcd_Cmd(Lcd_CURSOR_OFF); // Turn cursor off
Lcd_Out(1, 5,"HELLO"); // Print text to LCD, 1nd row, 5tH column
}
The above code will display HELLO on LCD.
The functions like Lcd_Init(),Lcd_cmd,Lcd_out are predefined functions in mikroC
which initialize,gives command and displays respectively.
Now also it is possible to scroll the characters on LCD. Its code is as follows:
Coding for scrolling
char *text = "SAHIL" ;
char *text1 = "10748" ;
void main()
{
TRISB = 0; // PORTB is output
Lcd_Init(&PORTB); // Initialize LCD connected to PORTB
Lcd_Cmd(Lcd_CLEAR); // Clear display
Lcd_Cmd(Lcd_CURSOR_OFF); // Turn cursor off
Lcd_Out(1, 5,text); // Print text to LCD, 2nd row, 1st column
Lcd_Out(2, 5,text1);
while(1)
{
Lcd_Cmd(LCD_SHIFT_LEFT);
delay_ms(1000);
}
}
It will shift the character to the left with a delay of 1 sec between it.
Thus LCD display and scroll is studied successfully.
PROJECT NO-5
BUILT IN ADC OF PIC16F73(TEMPERATURE MONITORING)
PIC16F73 consists of 5 internal ADC .
AD are available in different configurations according to their bit channels.viz 8
bit(costs Rs.120),10bit(costs Rs.600),12 bit(costs Rs.1200-2000) ,14 bit(costs
Rs.2000-4000),16bit(costs Rs.4000-25000),24bit(costs >25000).
These are externally connected to microcontroller like AT89s51 which don’t have
inbuilt ADC.
Now as PIC 16xxx has got the feature of inbuilt ADC.so,there is no need to connect
externally.PIC16XXX is featured with 8 bit ADC.
So can convert an analog value to 8 bit binary or from 0 to 255 in decimal range.
The 8-bit analog-to-digital (A/D) converter module has five inputs for the PIC16F73/76 and eight for the PIC16F74/77.The A/D allows conversion of an analog input signal to a corresponding 8-bit digital number. The output of the sample and hold is the input into the converter, which generates the result via successive approximation. Theanalog reference voltage is software selectable to either the device’s positive supply voltage (VDD), or the voltage level on the RA3/AN3/VREF pin.The A/D converter has a unique feature of being able to operate while the device is in SLEEP mode. To operate in SLEEP, the A/D conversion clock must be derived from the A/D’s internal RC oscillator.The A/D module has three registers. These registersare:• A/D Result Register (ADRES)• A/D Control Register 0 (ADCON0)• A/D Control Register 1 (ADCON1)The ADCON0 register, shown in Register 11-1, controls the operation of the A/D module. The ADCON1 register, shown in Register 11-2, configures the functions of the port pins. The port pins can be configured as analog inputs (RA3 can also be a voltage reference), or as digital I/O.
ADC HARDWARE CONNECTION
From 4th pin we are gaetting Analog input.
ADCON0 REGISTER (ADDRESS 1Fh)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE -------- ADONbit 7 bit 0
bit 7-6 ADCS1:ADCS0: A/D Conversion Clock Select bits00 = FOSC/201 = FOSC/810 = FOSC/3211 = FRC (clock derived from the internal A/D module RC oscillator)
bit 5-3 CHS2:CHS0: Analog Channel Select bits000 = channel 0, (RA0/AN0)001 = channel 1, (RA1/AN1)010 = channel 2, (RA2/AN2)011 = channel 3, (RA3/AN3)100 = channel 4, (RA5/AN4)101 = channel 5, (RE0/AN5)(1)110 = channel 6, (RE1/AN6)(1)111 = channel 7, (RE2/AN7)(1)bit 2 GO/DONE: A/D Conversion Status bitIf ADON = 1:1 = A/D conversion in progress (setting this bit starts the A/D conversion)0 = A/D conversion not in progress (This bit is automatically cleared by hardware whenthe A/D conversion is complete)bit 1 Unimplemented: Read as '0'bit 0 ADON: A/D On bit1 = A/D converter module is operating0 = A/D converter module is shutoff and consumes no operating current
ADCON1 REGISTER (ADDRESS 9Fh)
U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0— — — — — PCFG2 PCFG1 PCFG0
bit 7-3 Unimplemented: Read as '0'bit 2-0 PCFG2:PCFG0: A/D Port Configuration Control bits.
PCFG2:PCFG0 RA0 RA1 RA2 RA5 RA3 RE0(1) RE1(1) RE2(1) VREF 000 A A A A A A A A VDD 001 A A A A VREF A A A RA3 010 A A A A A D D D VDD 011 A A A A VREF D D D RA3 100 A A D D A D D D VDD 101 A A D D VREF D D D RA3 11x D D D D D D D D VDD
A = Analog inputD = Digital I/O
So,ADC will be provided analog input from different channels and correspondingly
these registers are set.
Now,coding to display voltage through temperature sensor
void ascii(unsigned int digit);
unsigned char table[]={'0','1','2','3','4','5','6','7','8','9'};
void main()
{
unsigned int e,f;
Lcd_Init(&PORTB);
Lcd_Cmd(Lcd_Clear);
Lcd_Cmd(LCD_CURSOR_OFF);
Lcd_Out(1, 1, "sensor temp=");
ADCON0 = 0x45; // Configure analog inputs and Vref
ADCON1 = 0x01;
TRISA = 0xFF; // PORTA is input
TRISB=0;
while(1)
{
e = Adc_Read(1); // first sensor
ascii(e);
delay_ms(1000) ;
f= Adc_Read(2); // second sensor
ascii(f) ;
}
}
void ascii(unsigned int digit)
{
unsigned char temp;
if(digit<100) //DECIMAL OR BINARY TO ASCII
{
temp=digit/10;
Lcd_Chr(1, 1, table[temp] );
temp=digit-temp*10;
Lcd_Chr(1, 2,table[temp] );
}}
PROJECT NO-6
TO STUDY SWITCHING ACTION OF PIC PINS.
As in AT89s51,the way of addressing pins is by p0.0,p0.1…..so on.
Similarly in PIC it is possible to address pins using
Syntax:
PORT( NAME).F(0 to 7)
Now pin can be put ON or OFF according to via resistor.
Internally,when pin is high its flip flop is sat.when external switch is closed ,it forces
no current or voltage to enter to pin and also lowers the pin from 1 to 0.
Thus when switch is pressed ,the pin becomes zero.so ,implementing this in
practical.
The swiches whose one end are connected to pins of nontroller are shown on next
page
The coding will be as follos:
#define s0 PORTC.F0
#define s1 PORTC.F1
#define s2 PORTC.F2
#define s3 PORTC.F3
#define s4 PORTC.F4
void main()
{
TRISB=0x00; \\ PORT B AS OUTPUT
TRISC=0xff; \\PORT C as input
PORTC=0xff; \\ ALL F/F’S TO SET
do
{
if(s0==0) \\1st switch is pressed
{
PORTB=0x80; \\1st LED glows
delay_ms(600);
}
if(s1==0) \\2nd switch is pressed
{
PORTB=0x40; \\2nd LED glows
delay_ms(600);
}
if(s2==0) \\3rd switch is pressed
{
PORTB=0x20; \\3rd LED glows
delay_ms(600);
}
if(s3==0) \\4th switch is pressed
{
PORTB=0x10; \\4th LED glows
delay_ms(600);
}
else
{
PORTB=0xff;
}}
while(1);
}
Thus switching action is studied.
PROJECT NO-8
SERIAL COMMUNICATION(B/W PC AND MICROCONTROLLER)
To send data via single line through a bit stream is known as serial communication.
Reception is of type SIPO-Serial Input Parallel Output.
Transmission is of type PISO-Parallel Input Serial Output.
Clock used in serial communication is called BAUD RATE.
PIC has two buffers and it allows full duplex communication.to change settings we
have to re configure TXSTA register
The Universal Synchronous Asynchronous Receiver Transmitter (USART) module is one of the two serial I/O modules. (USART is also known as a Serial Communications Interface or SCI.) The USART can be configuredas a full duplex asynchronous system that can communicate with peripheral devices, such as CRT terminals and personal computers, or it can be configured as a half duplex synchronous system that can communicate with peripheral devices, such as A/D or D/A integratedcircuits, serial EEPROMs, etc.
The USART can be configured in the following modes:• Asynchronous (full duplex)• Synchronous - Master (half duplex)• Synchronous - Slave (half duplex)Bit SPEN (RCSTA<7>) and bits TRISC<7:6> have to be set in order to configure pins RC6/TX/CK and RC7/RX/DT as the Universal Synchronous Asynchronous Receiver Transmitter.
TXSTA: TRANSMIT STATUS AND CONTROL REGISTER (ADDRESS 98h
R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R-1 R/W-0CSRC TX9 TXEN SYNC — BRGH TRMT TX9D
bit 7 CSRC: Clock Source Select bit Asynchronous mode: Don’t care Synchronous mode: 1 = Master mode (Clock generated internally from BRG) 0 = Slave mode (Clock from external source)
bit 6 TX9: 9-bit Transmit Enable bit 1 = Selects 9-bit transmission 0 = Selects 8-bit transmissionbit 5 TXEN: Transmit Enable bit 1 = Transmit enabled 0 = Transmit disabledNote: SREN/CREN overrides TXEN in SYNC mode.
bit 4 SYNC: USART Mode Select bit 1 = Synchronous mode 0 = Asynchronous mode
bit 3 Unimplemented: Read as '0'
bit 2 BRGH: High Baud Rate Select bit Asynchronous mode: 1 = High speed 0 = Low speed Synchronous mode: Unused in this mode
bit 1 TRMT: Transmit Shift Register Status bit 1 = TSR empty 0 = TSR full
bit 0 TX9D: 9th bit of transmit data. Can be parity bit
now in mikroC UART terminal also work as shown as
Now coding
1).to transmit data..
void main()
{
usart_init(2400);
while(1)
{
usart_write('A');
usart_write('M');
usart_write('A');
usart_write('N');
delay_ms(600);
}
}
2).to transmit as well as read
unsigned int i;
void main()
{
usart_init(2400);
while(1)
{
if(usart_data_ready() )
{
i= usart_read();
usart_write('i');
}
usart_write('A');
usart_write('M');
usart_write('A');
usart_write('N');
delay_ms(600);
}
Thus serial communication has been studied successfully.
BIBLIOGRAPHY
Wikipedia MicroC Manuals www.talkingelectronics.com www.howstuffworks.com The Art of Electronics (Book)
TRAINING REPORT
6 WEEKS SUMMER TRINING
(NETMAX TECHNOLGY)
SUBMITTEDBY:-
SAHIL GUPTA
ECE-5
100906095
DEPARTMENT OF ELECTRONICS AND COMMUNICATION
THAPAR UNIVERSITY, PATIALA
(JUNE – JULY 2011)
ACKNOWLEDGEMENT
I shall be very thankful to the teachers of netmax technology , chandigarh.I am sincerely thankful to them as they helped me during training period in every possible way.I am also thankful to the teachers of thapar university,Patiala.
SAHIL GUPTA
ECE-5
ROLLNO:-100906095
THAPAR UNIVERSITY, PATIALA