30
ه در م ا رن ب كد ن ت ش و ن ه در م ا رن ب كد ن ت ش و نAVR STUDIO AVR STUDIO

نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

Embed Size (px)

Citation preview

Page 1: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

در برنامه كد در نوشتن برنامه كد AVR AVR نوشتنSTUDIOSTUDIO

Page 2: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

برنامه برنامه شروع شروع

داده : داده :قسمت قسمت

.DSEG.DSEG

.ORG 0X60.ORG 0X60

.DEF TEMP,R16.DEF TEMP,R16

.EQU LENGTH,10.EQU LENGTH,10

.SET KEY_PORT,PORTC.SET KEY_PORT,PORTC

.STRING: .BYTE 5.STRING: .BYTE 5

Page 3: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

برنامه كد برنامه قسمت كد قسمت

.CSEG.CSEG

.ORG 0X80.ORG 0X80

MAIN:MAIN:

STR: .DB”PLEASE INSERT NUM: “STR: .DB”PLEASE INSERT NUM: “

------------

------------

RETRET

Page 4: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

برنامه كد برنامه قسمت كد قسمت

: استك گر اشاره دهي :مقدار استك گر اشاره دهي مقدار

LDI TEMP,HIGH(RAMEND)LDI TEMP,HIGH(RAMEND)

OUT SPH,TEMPOUT SPH,TEMP

LDI TEMP,LOW(RAMEND)LDI TEMP,LOW(RAMEND)

OUT SPL,TEMPOUT SPL,TEMP

Page 5: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

كليد صفحه كليد اسكن صفحه اسكن

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

1 1 1 1 1 1 1 11 1 1 1 1 1 1 1

0XF7 0 1 1 10XF7 0 1 1 1

0XFB 1 0 1 10XFB 1 0 1 1

0XFD 1 1 0 10XFD 1 1 0 1

0XFE 1 1 1 0 0XFE 1 1 1 0

Page 6: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

كليد صفحه كليد اسكن صفحه اسكنLDI TEMP,0XF7LDI TEMP,0XF7OUT PORTD,TEMPOUT PORTD,TEMPIN TEMP,PORTDIN TEMP,PORTD--- A--- ALDI TEMP,0XFBLDI TEMP,0XFBOUT PORTD,TEMPOUT PORTD,TEMPIN TEMP,PORTDIN TEMP,PORTD----------------

Page 7: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

AA• BST R16,4BST R16,4• BRBS 6,M1 BRBS 6,M1

R16 R16

• LDI A,'1'LDI A,'1'• RCALL DISPLAYRCALL DISPLAY• M1M1: : T T

SREG SREG• BST R16,5BST R16,5• BRBS 6,M2BRBS 6,M2• LDI A,'2'LDI A,'2'• RCALL DISPLAYRCALL DISPLAY• M2M2::• BST R16,6BST R16,6• BRBS 6,M3BRBS 6,M3• LDI A,'3'LDI A,'3'• RCALL DISPLAYRCALL DISPLAY• M3M3::

Page 8: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

نمايشگر با نمايشگر كار با كار

Page 9: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

• DISPLAY:DISPLAY:

• LDI TEMP,0XFFLDI TEMP,0XFF

• OUT DDRC,TEMPOUT DDRC,TEMP خروجی = جهتجهت خروجی = داده داده

• OUT DDRA,TEMP OUT DDRA,TEMP = خروجی داده خروجی = جهت داده جهت

• OUT PORTC,AOUT PORTC,A باشد می کارکتر باشد شامل می کارکتر رجيستررجيسترAA شامل

• SBI PORTA,SBI PORTA,55

• CBI PORTA,CBI PORTA,66

• SBI PORTA,SBI PORTA,77

• CBI PORTA,CBI PORTA,77

• RCALL DELAYRCALL DELAY نما با کار نما برای با کار ن ييبرای ن شگر تاخ ييشگر به تاخ از به ر ر يياز استاست

• RETRET

Page 10: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

• COMMAND:COMMAND: نما ارسالارسال نما دستورات شگرشگرييدستورات

• LDI TEMP,0XFFLDI TEMP,0XFF

• OUT DDRA,TEMPOUT DDRA,TEMP

• OUT DDRC,TEMPOUT DDRC,TEMP

• OUT PORTC,AOUT PORTC,A

• CBI PORTA,0CBI PORTA,0

• CBI PORTA,1CBI PORTA,1

• SBI PORTA,2SBI PORTA,2

• CBI PORTA,2CBI PORTA,2

• RCALL DELAYRCALL DELAY

• RETRET

Page 11: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

• DELAY:DELAY: ب ييتاختاخ جادجاديياا ب ری از ييری از ش ثان ييمم1010ش ثان لی ههييلی

• ldi R20,250ldi R20,250

• BACK1:LDI R21,200BACK1:LDI R21,200

• HERE: dec r21HERE: dec r21

• cpi r21,0 cpi r21,0

• brne HEREbrne HERE

• dec r20dec r20

• cpi r20,0cpi r20,0

• brne BACK1brne BACK1

• RETRET

Page 12: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

RESET_LCD: RESET_LCD: نما نما بردن به ييبردن به شگر اول ييشگر حالت اول ک حالت ه ه ييک مطلوبمطلوب

• LDI A,0X0CLDI A,0X0C

• RCALL COMMANDRCALL COMMAND

• LDI A,0X01LDI A,0X01

• RCALL COMMANDRCALL COMMAND

• LDI A,0X06LDI A,0X06

• RCALL COMMANDRCALL COMMAND

• RETRET

Page 13: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

تايمرها با تايمرها كار با كار

TIMER 0TIMER 0TCCR0TCCR0

TCNT0TCNT0T/C 0 ControlT/C 0 Control

T/C 0T/C 0

TIMER 1TIMER 1TCCR1ATCCR1A

TCCR1BTCCR1B

TCNT1TCNT1

OCR1AOCR1A

OCR1BOCR1B

T/C Control register 1 AT/C Control register 1 A

T/C Control register 1 BT/C Control register 1 B

Timer/Counter 1Timer/Counter 1

Output copmare Register Output copmare Register 1A1A

Output copmare Register Output copmare Register 1b1b

Page 14: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

تايمر هاى تايمر پورت هاى پورت

Page 15: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5
Page 16: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5
Page 17: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

يك تايمر هاى يك پورت تايمر هاى پورت

Page 18: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5
Page 19: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

يك تايمر كالك تعيين يك پورت تايمر كالك تعيين پورت

Page 20: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5
Page 21: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

يك تايمر براى يك مثالى تايمر براى مثالى

• LDI TEMP,0X80LDI TEMP,0X80 تا کردن تا فعال کردن ککييمر مر ييفعال

• OUT TIMSK,TEMPOUT TIMSK,TEMP

• LDI TEMP,HIGH(-50000)LDI TEMP,HIGH(-50000)

• OUT TCNT1H,TEMPOUT TCNT1H,TEMP

• LDI TEMP,LOW(-50000)LDI TEMP,LOW(-50000)

• OUT TCNT1L,TEMPOUT TCNT1L,TEMP

تا 5000050000دادن دادن قرارقرار محتوای تا در محتوای مرمرييدر

• LDI TEMP,0X01 LDI TEMP,0X01

• OUT TCCR1B,TEMPOUT TCCR1B,TEMP کالککالک انتخابانتخاب

Page 22: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

ها ها وقفه وقفه

External External SRAM/INTSRAM/INT

MCUCRMCUCRGeneral controlGeneral control

External INTExternal INTGIMSKGIMSK

GIFRGIFRINT mask reg.INT mask reg.

INT flag reg.INT flag reg.

Timer INTTimer INTTIMSKTIMSK

TIFRTIFRTimer INT maskTimer INT mask

Timer INT flagTimer INT flag

Page 23: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

وقفه هاى وقفه پورت هاى پورت

Page 24: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5
Page 25: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

ها ها پورت پورت

Page 26: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

ها ها پورت پورت

Page 27: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

صفر خارجى وقفه براى صفر مثالى خارجى وقفه براى مثالى

• LDI TEMP,0X40LDI TEMP,0X40 صفر فعالفعال وقفه صفر کردن وقفه کردن

• OUT GIMSK,TEMPOUT GIMSK,TEMP

• LDI TEMP,0X02LDI TEMP,0X02 وقفه ننييييتعتع وقفه نوع نوع

• OUT MCUCR,TEMPOUT MCUCR,TEMP

• SEISEI کل کردنکردن فعالفعال کل وقفه ىىوقفه

Page 28: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

ميکرو وقفه بردارهای ميکرو آدرس وقفه بردارهای آدرس

NameNameAddresAddresss

Triggered byTriggered by

RESETRESET00000000Hardware ResetHardware Reset,,

Power-On-ResetPower-On-Reset

INT0INT000010001Level change INT0 Level change INT0 pinpin

INT1INT100020002Level change INTLevel change INT11 pinpin

TIMER1CAPTTIMER1CAPT00030003Capture event Capture event on on TCO1TCO1

TIMER1COMPTIMER1COMPAA

00040004TCO1=TCO1=Compare Compare value Avalue A

TIMER1 TIMER1 COMPBCOMPB

00050005TCO1=TCO1=Compare Compare value Bvalue B

TIMER1 OVFTIMER1 OVF00060006TCTCOO 1 Overflow 1 Overflow

Page 29: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

ميکرو وقفه بردارهای ميکرو آدرس وقفه بردارهای آدرس

NameNameAddresAddresss

Trtiggered byTrtiggered by

TIMER0 OVFTIMER0 OVF00070007TCO0 Overflow

SPI STCSPI STC00080008Transmit Complete

UART TXUART TX00090009

UART UDREUART UDRE000A000A

UART TXUART TX000B000BUART All Sent

ANA_COMPANA_COMP000C000CAnalog Comparator

TIMER1 TIMER1 COMP1COMP1

- - - -- - - -TCo1=Compare value 1

Page 30: نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG 0X60.DEF TEMP,R16.EQU LENGTH,10.SET KEY_PORT,PORTC.STRING:.BYTE 5

وقفه بردارهای وقفه آدرس بردارهای آدرس

• .ORG 0000 .ORG 0000 ResetReset بردار بردار آدرس آدرس وقفهوقفه

• RJMP ISERVICE0RJMP ISERVICE0 (0x01) (0x01) بردار بردار آدرس آدرسصفر صفر وقفه وقفه

• .ORG 0006 .ORG 0006 تا وقفه بردار تا آدرس وقفه بردار کانتر ييآدرس کانتر مر مرککيي

• RJMP TCORJMP TCO