نوشتن كد برنامه در AVR STUDIO. شروع برنامه قسمت داده :.DSEG.ORG...

Preview:

Citation preview

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

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

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

.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

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

.CSEG.CSEG

.ORG 0X80.ORG 0X80

MAIN:MAIN:

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

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

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

RETRET

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

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

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

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

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

كليد صفحه كليد اسكن صفحه اسكن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----------------

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::

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

• 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

• 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

• 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

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

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

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

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

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

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

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

• 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 کالککالک انتخابانتخاب

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

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

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

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

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

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

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

• OUT GIMSK,TEMPOUT GIMSK,TEMP

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

• OUT MCUCR,TEMPOUT MCUCR,TEMP

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

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

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

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

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

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

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

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

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

• RJMP TCORJMP TCO