صفحه 1:
صفحه 2:
#منابع :
#منابع موجود در www.atmel.com
مرجع کامل میکروکنترلرهای ۸۸۷ - انتشارات نص - محمد مهدی پرتوی فر و ..
© ميكروكنترلرهاى +4171 و كاربردهاى آنها - انتشارات نص - امیر ره افروز
#نرم افزارها :
CodeVisionAVR ®
Proteus ©
AVR Studio ©
صفحه 3:
©
ميان ترم 5 .
i ۳ : #تمرين
هو
بان قوم ٠. :
نمره
صفحه 4:
Introduction
© ATMEL
© 8 bit Microcontroller
© Families
® Tiny
© 90S (CLASSIC)
® Mega
®LCD AVR
® Execute One Instruction Per Cycle
(MIPS)
صفحه 5:
جایگزینی تراشه های قد
AT90S2313 ATTINY2313
AT90S2323 ATTINY25
AT90S4433 ATMEGA8
AT90S8515 ATMEGA8515
ATMEGA103 ATMEGA128
ATMEGA161 ATMEGA162
ATMEGA163 ATMEGA16
ATMEGA323 ATMEGA32
صفحه 6:
نام میکر و کنترلر از دو یا سه قسمت تشکیل شده است
6 ۸۲۷۳0۸ 6
9 ۸۲۳0۵ 8
ATTINY 28L ©
ATTINY 28 V ®
قسمت اول نوع و سری میکرو و قسمت دوم حافظه 112511 را بیان می کند.
قسمت سوم مخفف 00176۳ 101۷ و 001761 pS wi very low
جدول زیر شرح داده شده است:
صفحه 7:
2
ميكر وكنترلر 81/4 بدون پسوند 455
ميكر وكتترلر 21/18 با يسوند 1 ۷ -2.7
میکر و کنترلر ۴۹ ۸٩۷ با پسوند۷ 1.8-5.5
0-16 MHZ
0-8 MHZ
0-4 MHZ
صفحه 8:
-Package -
ao موجه
Pat aoci)
امه موم
PAR ADE)
a (3008)
as (apes)
ae (ance)
Par ocr)
AREF
ND
Per (rosea)
Pos (TOSC!)
Pos (TO
Pot 1700}
Pos TINS)
Po2 ITOK)
بم (308)
Poa رصح
Por (0¢2}
TOO
۳
3
۵۵ روصم
Pet )7
auras) P52
(OCD) PE
Pad )58(
(eros Pes
(ets) PB:
(60K) PBT
RESET
vee
KD
MTA?
(x0) P00
(xD) PDE
canto) Po2
Pos رصع
صفحه 9:
Pad (ADC)
PAS (ADCS)
PAB (ADCS)
PAT (ADCT)
AREF
GND
avec.
Por (Tosca)
Pes (TOSct)
PCs (TD)
PCA (THO)
(7
TOFPIMLE
38.2 segs
255 5 2222
22
ممم مع ممم ممم
موم وت
۲ 7
/
3 3
33 :
8 :
i :
2 :
is /
8 3
to u
3 1
1219141161716! 920722
otto errs
BSS885888595
EEEEESSERES
e588 3382
(Mosi) PBS
(MISO) PEE
(S0K) P87
RESET
۷0
GND
xTAL2
XTALT
(RxD) Poo
(TxD) POI
into) PO
صفحه 10:
1
موه
NES
نامع هلام
صفحه 11:
Architecture
® RISC: Reduced Instruction
Set Computer ==>
AVR
® CISC: Complex Instruction
Set Computer
صفحه 12:
صفحه 13:
Data Bus &-bit
Program Status
Flash لمم >
an Counter and Control
Memory لمم
T اجه
>| sexe 7
Instruction General Brit
Register Purpose 5
1 م الم Gait
Tastuction Watchdoi
Decoder | Tee
1 2 1
g £ canal
Control Lines 3 omparator
2 3
1 g
6 = VO Modulet
VO Module 2
VO Module n
EEPROM
VO Lines
صفحه 14:
Memory Types
® SRAM (Static Random Access Memory)
@ EEPROM é£(Electrically Erasable Programmable Read
Only Memo)
© Program
© Flash
صفحه 15:
Memory
© Flash (for mega32)
© 32K Bytes of In-System Self-
Programmable Flash Endurance: 10,000
Write/Erase Cycles
صفحه 16:
Data Memories
® SRAM (for mega32)
° 2K Byte Internal SRAM- Register file, I/O
Register, Data Address.
°® EEPROM (for mega32)
° 1024 Bytes EEPROM Endurance: 100,000
Write/Erase Cycles
صفحه 17:
® Program Counter (PC)
® Instruction Register
(IR)
® Instruction Decoder
(ID)
صفحه 18:
صفحه 19:
X-tegister Low Byte
X-register High Byte
Y-register Low Byte
Y-register High Byte
Z-register Low Byte
Z-register High Byte
$00
$01
302
800
508
SOF
$10
$11
91۸
$1B
56
5
SIE
SIF
F
8
General
Purpose
Working
Registers
صفحه 20:
X-Y-Z Registers
۳ » x ۲
X- اوه 7 5
‘R27 (S1B) R26 (S1A)
3 ۳ 1 ۲
8 ۳ 5 ٠
و2 7 5
For (str) ۳301۳1۳
صفحه 21:
Data Bus &-bit
Program Status
Flash لمم >
an Counter and Control
Memory لمم
T اجه
>| sexe 7
Instruction General Brit
Register Purpose 5
1 م الم Gait
Tastuction Watchdoi
Decoder | Tee
1 2 1
g £ canal
Control Lines 3 omparator
2 3
1 g
6 = VO Modulet
VO Module 2
VO Module n
EEPROM
VO Lines
صفحه 22:
ALU
e Arithmetic And Logic Unit
e Arithmetic
- ADD R1,R2
eR1۩R1+R2
eLogic
e AND RI,R2
۰111 111 AND R2
صفحه 23:
Owe
فيوز بيت ها
قسمتی از حافظه میکرو کنترلر ها هستند که امكاناتى را در اختيار كاربر قرار مى
دهند و با پاک شدن حافظه میکرو تتظیمات آنها از بين نمی رود
صفحه 24:
Clock
Source
صفحه 25:
Clock Sources
Device Clocking Option |
External CrystaliCeramic Resonator | 1114-1010
| External Low-frequency Crystal | 1001
External RC Oscillator | 1000 - 0101
| Calibrated Internal RC Oscillator | 0100 - 0001
| External Clock | 0000
Note: 1. Forall fuses “1” means unprogrammed while “0” means programmed.
صفحه 26:
-Package -
ao موجه
Pat aoci)
امه موم
PAR ADE)
a (3008)
as (apes)
ae (ance)
Par ocr)
AREF
ND
Per (rosea)
Pos (TOSC!)
Pos (TO
Pot 1700}
Pos TINS)
Po2 ITOK)
بم (308)
Poa رصح
Por (0¢2}
TOO
۳
3
۵۵ روصم
Pet )7
auras) P52
(OCD) PE
Pad )58(
(eros Pes
(ets) PB:
(60K) PBT
RESET
vee
KD
MTA?
(x0) P00
(xD) PDE
canto) Po2
Pos رصع
صفحه 27:
ernal
“og XTAL2
5
4 St xtra
GND
Oscillator
Frequency Range | Recommended Range for Capacitors
(Hz) C1 and C2 for Use with Crystals (pF)
0.4-0.9 2
0.9-3.0 12-22
۵0-0 12-22
105 12-22
CKSELS.41
Tor
110
111
401, 110, 111
This option should not be used with crystals, only with ceramic resonators.
۷02۲
ات ارت
Note: 1.
صفحه 28:
Prov Frequency Crystal
Oscillator
2
۲ XTAL2 و ویو
5 ta? ات
وه 0
CKOPT =0 ==> Internal 36pF Capacitor
صفحه 29:
External RC Oscillator
XTAL2
1011 ۳۱/۵96
7
8 | ۰ |
90 99-0
ont 50-0
| 1000 80-20
min C=22pF 3K<R<100K
if CKOPT=0 then internal 36pF cap is available
صفحه 30:
۱9 ۳
Oscillator
CKSELS.0 ‘Nominal Frequency (MHz)
۳ 10
0010 20
ort 40
700 86
Note: 1. The device is shipped with this option selected.
صفحه 31:
External Clock
CKSEL=0000
If CKOPT=0 then internal c=36pF
is available between XTAL1 and GND
لور
ono
Ne
صفحه 32:
وس سس سس
Oscillator
© For AVR microcontrollers with Timer/Counter
Oscillator pins (TOSC1 and TOSC2), the
crystal is connected directly between the
pins. No external capacitors are needed. The
Oscillator is optimized for use with a 32.768
kHz watch crystal. Applying an external clock
source to TOSC1 is not recommended.
صفحه 33:
Clock
Distribution
صفحه 34:
Calibrated RC
Oscillator
Flach and
EEPROM
ADC CPU Core RAM
1 1
عووااه
AVR Clock تمه
Control Unit
ی
1 1
Reset Logio Watchdog Timer
7 جز 7
‘Souree Clock Watchdog Clock
Watchdog
Oscillator
Low-frequency
Crystal Oscilator
Extemal Giock Crystal
Oscillator
General ۵
Modules
External RC
Oscillator
‘Agyrehronous
Timer/Counter
1
Timer/Counter
‘Osellator
صفحه 35:
صفحه 36:
صفحه 37:
SRAM
Management
صفحه 38:
Data Aciress Space
6
Register Fle
M Data
(mega32)
صفحه 39:
Programmin
1
CodevisionAVR
صفحه 40:
e
Prototyp
#include <mega32.h>
global definition
mainQ
{
local variable;
© statements;
1
function10,
{
local variable;
Statements;
}
function20,
© local variable;
© Statements;
1
صفحه 41:
Prototype
چون میکرو هميشه بايد در حال فعالیت باشده درون تابع 128110 یک حلقه دائم قرار داده می
© #include <mega32.h>
© global definition
© main()
4
local variable; »©
دستوراتی که باید یک بار اجرا شوند ٩
(1) ۲۷۱۵ ۰
a
دستورات و کدهای اصلی برنامه که دائما اجرا می شوند 6
۰1
95
صفحه 42:
Owe
نکاتی در مورد برنامه نویسی
خط اول هميشه دستور فراخوانی فایل های حاوی توابع 11630161 است
در انتهای هر عبارت یک سمی کالن قرار داده می شود
| 5 | 52 ابتدا و اتهای هر حلقه» عبارت شرطی و یا بلوک قرار داده می شود
از // یا( /* و */) برای نوشتن توضیح در برنامه استفاده می شود
صفحه 43:
Data Type
© Type Size (Bits) Range
© bit 1 0,1
© char 8 -128 to 127
© unsigned char 8 0 to 255
© signed char 8 -128 to 127
© int 16 -32768 to 32767
© short int 16 -32768 to 32767
© unsigned int 16 0 to 65535
© signed int 16 -32768 to 32767
© Jong int 32 -2147483648 to 2147483647
© unsigned long int 32 0 to 4294967295
© signed long int 32 -2147483648 to 2147483647
© float 32 21.1756-38 م 98
© double 32 21.1756-38 م 98
صفحه 44:
Owe
متغير ها و ثابت ها ابتدا باید معرفی شوند
نام متغير نوع متغير حافظه مورد نیاز برای متفیر
eeprom int temp;
flash int
temp=10;
eeprom char str;
float a;
int
b=30;
.نام متفیر ها می تواند تر کیبی از حروف و اعداد باشده فقط نام متفیر نباید با عدد شروع شود
صفحه 45:
ات سس
Constants
®flash int x=123;
®const char y=‘a’;
®#define C 100;
صفحه 46:
آرایه ها
تعدادی متغیر دلخواه از یک نوع و یک نام که با اندیس های شماره دار از هم جدا
هستند
101 5۳]10[
int i[3]= {2,5,6}
رشته(51۳1۳0):
به آرایه هایی که حروف اسکی را درون خود نگه می دارند» رشته می گوییم.
Char t[5]= “temp
صفحه 47:
bit Data type
®bit x,y;
®x=1;
® from R2.0 to R14.7 > max=104
® Set in following menu:
® Project/Configure/C Compiler/Code
Generation/Bit Variable size
صفحه 48:
—————
Operators
1
۱
0
A
۸
۱ ا
eases
۷ ۱
0
صفحه 49:
صفحه 50:
>>
>>
OxFO & OxOF
0x00 | 0x03
OxOF “ ۴
~(OxFO)
OxFO >> 4
00۲ >> 4
صفحه 51:
افزایش یک واحد
کاهش یک واحد
آدرس
در آدرس
مثال
3
att
a=at1
a=a-1
آدرس 3
در آدرسی که 3 به آن آشاره میکند
صفحه 52:
صفحه 53:
صفحه 54:
Decision and loops
© if -else
® while
® do-while
® for
© Switch - case
صفحه 55:
صفحه 56:
char a=10;
char b=20;
char max;
void main(void)
14
while(1)
£
if(a>b)
2
}
€
max=b;
صفحه 57:
switch (=) (
ase) Jabs
Vege
نامز
شار ع عدت
Tope
fereak:]
casey jute
مور ۳
تام
لدعم
Leonel
صفحه 58:
case 4:
cate 6:
aprintf(buffer,"Tabestan");
break;
cane 3:
sprint(buffer,"Paez"
break;
case
]
معط
defaul
sprintf[butfer,"Error”);
1
#include <stdio.h>
char month=10;
char buffer[10];
void main(void)
4
while(1)
1
switch (month)
1
case 1:
case 2:
case 3:
‘sprintf(buffer," Bahar");
break;
صفحه 59:
صفحه 60:
صفحه 61:
صفحه 62:
#include <stdio.h>
char buffer[10];
void main(void)
ف
while(1)
1
for (I=1; 1<=10; 1=1+1)
sum = sum+i;
sprintf(buffer,“Sum is %d",sum);
1
71
صفحه 63:
توابع و فرم تابع نویسی
نام تابع 2 نوعداده خروجى (داده هاوورودى ©
8
تعريف متغير هاى محلى ©
۰
با ز گرداندن مقدار خروجی در صورت وجود 6
=
دستورات
صفحه 64:
برنامه ای بنویسید که عدد ورودی را به توان ۳ برساند
®longint func( int x)
BE
® long int s;
© s=xtx*x;
© return زک
=:
صفحه 65:
جایگاه نوشتن توابع
:توابع را در دو جا می توان نوشت
۱- قبل از main gt
۲- در زیر کل برنامه
<include<header#
Void func(void)
1
دستورات
()Void main
}
دستورات
7
صفحه 66:
<include<header#
‘Void fune(void)
Void main(void)
1
دستورات
While(1)
1
دستورات
1
{
(Void fune
1
دستورات
1
صفحه 67:
Libraries
math.h
stdio.h
delay.h
Megal16.h
And ...
صفحه 68:
PORTS
صفحه 69:
Direction
#4 8 % ¢ اد ot
مومه [ 5021 | 9082 | 5045 | 0064 | 5085 | 905 |
|
Initial Value 0 3 3 0 0 3 0 0
Output=1
// PA.O input
3 //PA.5 output
۳16-0: 6
صفحه 70:
Output Latch
a 76 5 4 3 2 3 9
[Farrar | romae roma | ronmat | roma] Fomras | ron | roma] roma
peauwite RAT a
Initial Vatu 0 0 9 0 0 3 0 0
صفحه 71:
Input register
Br 7 6 5 4 3 2 1 0
LpINA7 | prac | pmas | PINAG | Pmas | PINAZ | PINAY | PmAO | PINA
ReadWrite 8 8 8 8 8 8 8 8
Intial Value ناا NA NA ۷۸ NA NA NA NA
صفحه 72:
Example-1
برنامه ای بنویسد که بر روی پورت 3 مقدار 0628 را بنویسد.
#include <mega32.h>
void main(void)
{
DDRB=0xFF ;
while (1)
1
PORTB=0x28;
1
صفحه 73:
Example-2
© تابعى بنويسيد که یک چراغ راهنمایی را بصورت زیر پیاده سازی کند:
ju? : ۱۵ثانیه
گزرد: ۲ثانیه
© قرمز: 8 ثانيه
نام تابع : 1181110516121
ورودی : ندارد
خروجی : ندارد
سبز : ۳0۳۲۸۵۰0 زرد: ۳0۲۸.1 0,55 : PORTA.2
صفحه 74:
Example-2
Header file: delay.h
void delay_us(unsigned int n);
void delay_ms(unsigned int n);
delay_us(100) <-- #مثال : تاخیر ۱۰۰ میکروانیه
#مثال : تاخیر ۵ انیه -- < delay_ms(5000)
صفحه 75:
Example-2
#include <mega32.h>
#include <delay.h>
void traficsignal (void) ;
void main(void)
4
DDRA=0x07 ;
while (1)
1
traficsignal();
he
}
void traficsignal (void)
1
PORTA. 0=1; PORTA. 1=0; PORTA. 2=0;
delay_ms(15000) ;
PORTA, 0=0; PORTA. 1=1;PORTA.2=0;
delay_ms (3000) ;
PORTA. 0=0; PORTA. 1=0; PORTA. 2=1;
delay ms (15000) ;
و
صفحه 76:
Exercise-1
۱- تابعی بنویسد که یک چراغ راهنمایی را با دریافت تاخیرها توسط پرنامه
زیر راه اندازی کند.
#سبز : ۵06127 ثانیه
ast Ydelay #ررد:
ast ٩0612۲ #قرمز:
صفحه 77:
Exercise-1
#include <mega32.h>
void traficsignal(int gdelay,int ydeay,int rdelay);
void main(void)
1
DDRA=0x07 ;
while (1)
1
:(2,لا,»*) 8116519081
ye
}
void traficsignal(int gdelay, int ydelay, int rdelay)
1
PORTA. 0=1; PORTA. 1
delay _ms(gdelay) ;
PORTA.0=0;PORTA.
delay ms(ydelay) ;
PORTA.0=0; PORTA.
delay_ms(rdelay) ;
1
صفحه 78:
Example-3
ابعی بنویسید که یک عدد بی علامت را از پورت ۸ خوانده و بر روى يورت
3 نشان دهد.
#include <nega32.h>
void in out port(void);
void main(void)
1
0900۵
2088-01:
while (1)
12
ماه و
1
>
void in out port (void)
2
‘unsigned char x;
x=PINA;
PORTB=x;
0
صفحه 79:
7segment
صفحه 80:
Common Anode
صفحه 81:
Common Cathode
صفحه 82:
Example-4
#برنامه ای بنویسید که اعداد ۰ تا ٩ را بر روی 7560106 آند
مشترک به فاصله یک ثانیه نشان دهد .
#include <mega32.h>
#include <delay.h>
unsigned char seven seg code(unsigned char num) ;
void main(void)
1
unsigned char i;
DDRA=Oxff;
while (1)
{
for (i=0;i<10;i++)
PORTA=seven_seg code(i);
delay_ms (1060) ;
Mz
i
صفحه 83:
Coding
نت ل anaes
وه
1 1 1 1 1 1 3 ° 1
2 1 0 1 ° ° 1 ° ° om)
3 1 ° 1 1 3 3 0 0 ۳
4 1 ° ° 1 1 3 ° 1 لد
5 1 ° ° 1 3 3 1 0 eo
6 2 ° ° ° ۰ ۰ 1 a ان
7 1 1 1 1 1 3 ° ° ‘ore
8 1 ۰ ° ° ° 3 ۰ ° 2
ات
صفحه 84:
Example-4
unsigned char seven_seg_code(unsigned char num)
1
unsigned char out;
switch (num)
{
case O:out=0xc0; break;
case 1:out=0xf9; break;
case 2:out=0xa4; break;
case 3:0ut=0xb0;break;
case
case
case
case
case
case
1
return out;
1
صفحه 85:
Owe
°¥- مثال قب
© مثال قبا
ly 7447
Exercise
ل را برای یک 75860 کاتد مشترک پیاده سازی کنید.
ل را با استفاده از 7segment .4 BCD Ja..IC
اده سازی کنید.
۴ با استفاده از 75601۳0610 کاتد مشترک و ۰7448 10 یک شمارنده
۰ قا ٩ با فاصله زمانی. ۱ ثانیه بسازید.
©ه- برنامه ای بنویسید که عددی را از پورت 3 خوانده و برروی 7560
نمایش دهد.
#ع- یک شمارنده ۰ تا ۹٩ با فاصله زمانی ۱ ثانیه بسازید
صفحه 86:
Double 7Segment
صفحه 87:
صفحه 88:
LCD
صفحه 89:
LCD1
۱۷۵16
صفحه 90:
OV (GND)
Power supply for logic circuit and LCD (+4. 5V~+5.
50
Bias voltage level for LCD driving
Register select input
When RS= “High, data register is selected
When RS= “Low”, instruction register is selected
-Read/Write selection input
When RW= “High”, read operation
When RW= “Low”, write operation
Start enable signal to read or write the data
DBO-DB3, in 8-bit bus mode, used as low order bi-
directional data bus
During 4-bit bus mode, open these pins
DB4-DB7, in 8-bit bus mode, used as high order bi-
directional data bus. In case of 4-bit bus mode, used.
as both high and low order
DB? used for Busy Flag output
backlight anode
backlight cathode
Power supply
Power supply
LCD Supply Voltage
Register select
Read/Write
Read Write enable
Data bus 0-7
RW
DBO
DBL
DB2
DB3
24
DBS
6
DB7
صفحه 91:
۲ لق
بس لقد
aa لك
PADADOD
2۸۱۸۵6۱
PAQADCZ
4 paaapca
ومس ليد
PASIADCS
معممويع لكد
همع لد
موسو لت
۲ لیم
مس لت
me
له
رس
Berson
ATMEGATS
10%
10k
صفحه 92:
Initialization
/* the LCD module is connected to PORTC */
#asm
+ equ __lcd_port=0x15
#endasm
/* now you can include the LCD Functions */
#include <lcd. h>
Led_init(20);
صفحه 93:
PORT ADDRESS
$1B ($38) PORTA
$1A ($3A) DDRA
$19 ($39) PINA
$18 ($38) PORTB
$47 ($37) DDRB.
$16 ($36) PINB
$45 (635) PORTC.
$44 (634) DDR.
$13 ($33) PING
$42 ($32) PORTD.
$11 ($31) DDRD
$10 ($30) PIND
صفحه 94:
-CD Configuration With
CodeWizard
7
He teh
USART | Ariog Coast ADE | SPI
vc ۱ مه
وت | Pate | Enamaliea | Tine
LCD. | eeanged | Poot متمد
caret fPoRTa =]
ناسمه 87
PORT 80-88 LCD Fing)
PORT AK 1-AD LCD Pins)
PORT 3t2-EN [LED Fing)
PORT Bk?
PORT 304-3046۵ Pitt)
PORT 8k5-OBSILCD Pr12)
PORT BRB -OBG(L.CD Pr 13)
PORT St 7-OB7(LCD Pr 14)
صفحه 95:
Icd.h - High Level
unsigned char Icd_init(unsigned char
lcd_columns)
void lcd_clear(void)
void lcd_gotoxy(unsigned char x, unsigned
char y)
void lcd_putchar(char c)
void lcd_puts(char *str)
void lcd_putsf(char flash *str)
صفحه 96:
unsigned char Icd_init(unsigned char
lcd_columns)
Example:
lcd_init(16)
صفحه 97:
Owe
void lcd_clear(void)
صفحه ال سی دی را پاک می کند
void lcd_gotoxy(unsigned char x, unsigned char y)
مکان نما را به سطر و ستون دلخواه می برد
Lcd_gotoxy(4,2)
صفحه 98:
void lcd_putchar(char c)
Example :
Icd_putchar(‘a');
void lcd_putsf(char flash *str)
Icd_putsf(” Hello World");
صفحه 99:
void lcd_puts(char *str)
Example:
sprintf(buffer, “tempreture= %d”,
temp);
lcd_puts(buffer);
صفحه 100:
۰ ۱
5 و
یجنم کاراکت ع8
را بر ووی یک 2316 LOD تمایش دهید.
#include <mega16.h>
9
-7
xample
و در سطر دوم ستون اول عبارت
asm
‘equ _Icd_port=0x1B ;PORTA.
#endasm
#include <led.h>
#include <delay-h>
void main(void)
{
led_init(16);
while (1)
1
Ied_clear();
led_gotoxy(5,0);
Ied_putchar(‘a’);
led_gotoxy(0,1);
Icd_putsf("CodeVisionAVR");
delay_ms(200);
5
3
صفحه 101:
xample-8
ابعى بنويسيد كه بصورت روان كلمه 17151011 00016) را بر روى (1:)001 نمايش دهد.
include <megal6.h>
i1Alphanumerie LCD Module functions
asm
‘equ _lod_port=Ox1B ;PORTA
endasm
#include <lod.h>
Pinclude <delay.h>
‘void main(votd)
1
ints
Ted init(16);
while (1)
{
for (I= 0;1<7:i++)
1
۳
Jed_gotoxy(,0);
Icd_putsf("CodeVisios
delay_ms(400);
1
1
صفحه 102:
PULL UP
PUD
DDxn | PORTxn | (in SFIOR) vo Pull-up | Comment
0 0 x Input No ‘Tri-state (Hi-Z)
Pxn will source current if ext. pulled:
1 0 Input | Yes | low.
1 1 Input No | Tristate (Hi-Z)
1 0 x Output | No | Output Low (Sink)
1 1 x Output | No | Output High (Source)
a a8 2 # اه ةق 1 &
[aor] SS
دمن EN
Intial value و 3 3 9 ۰ 9 ۰ ۰
صفحه 103:
example5
© برنامه ای بنویسید که پین پنجم پورت ۸ را PULL UP 09,5 و ورودی آن را بخواند چنانچه ورودی صفر شد
یک 160 را روشن نماید.
#include <mega32.h>
void main(void)
PORTA.0=0
SFIOR=0x09;
white (1)
{
PORTA.0=0;
2
صفحه 104:
اوآ
صفحه 105:
صفحه 106:
تلمع
Ola
صفحه 107:
a
o
ca
2ج
a1
Rt
R2
R3
94
PCOISCL
PCUSDA
PC2TOK
(5
PC4iTDO
PCSITD)
PCBTOSC!
PCHTOSC?
۴۵0۳۵
POUTXO
PO2ANTO
POSMNT1
PD4/OC1B
ا
۴۵۵/۴
۳0002
ACC
AREF
Ut
RESET
ml (6۲۸1
اعد 2
40
۳۸۵
PAIIADCI
PA2ADC?
PABADC3
PA#ADC4
PASIADCS
PABIADCB
PATIADC?
PBOXCKITO
PBITI
PB2/INT2IAIND
PB3OCDIAIN'
PB4SS
PBSMOSI
PBGMISO
PBTISCK
ATMEGA32
صفحه 108:
Initialization
Is key
pressed?
Find key
Is Key
released
2
صفحه 109:
Initialization
void initial_keypad_port()
SFIOR=SFIORS&OXFB;
1
صفحه 110:
unsigned char key, butnum;
int s;
unsigned char keytbl[16]={Oxee, Oxed, Oxeb, Oxe7, Oxde, Oxdd,
Oxdb, 0xd7, Oxbe, Oxbd, Oxbb, 0xb7, 0x7e, 0x7d, 0x7b, 0x77};
DDRC = Ox0f;
PORTC = Oxf0;
delay_us(5);
key = PINC;
DDRC = Oxf0;
PORTC = OxOf;
delay_us(5);
key = key | PINC;
صفحه 111:
if (key !
{
for (butnum=0; butnum<16; butnum++)
{
if (keytbl[butnum]==key) break;
}
صفحه 112:
Example-9
* برنامه اي بنویسید که عددي را از 16617120 خوانده برروي 7960نمایش
دهد.
صفحه 113:
#include<mega16.h>
#include<delay.h>
int key();
display(int x);
int a;
main()
{
DDRB=Oxff;
a=key();
display(a);
}
صفحه 114:
Oxdd, Oxdb, 0xd7, Oxbe,
unsigned char key, butnum;
int s;
unsigned char keytbl[16]={Oxee, Oxed, Oxeb, Oxe7, Oxde,
id, Oxbb, Oxb7, Ox7e, Ox7d, 6x7b, 0x77};
DDRC = OxOf;
PORTC = Oxf0;
delay_us(5);
key = PINC;
DDRC = Oxf0;
PORTC = Ox0f;
delay_us(5);
key = key | PINC;
if (key != Oxff)
{
for (butnum=0; butnum<16; butnum++)
if (keytbl[butnum]==key) break;
1
s=butnum;
1
else
s=17;
return s;
صفحه 115:
display(int x)
{
char str[16]=
{0x3F,0x06,0x5B,0x4F, 0x66, 0x6D,0x7D,
oe Ox6F,0x77,0x7C,0x39,0x5E,0x79,
x 7
PORTB=str[x];
}
صفحه 116:
نامه با طورى دهيد كه عدد را (01).آنما دهد
۱ بالا را 5
PASS SY); 1 0 oe را pay