SlideShare a Scribd company logo
1 of 63
Download to read offline
D
‫آزمایشگاه‬‫ریزپردازنده‬1
‫دانشگاه‬‫شهیدباهنر‬‫کرمان‬
‫مبتنی‬‫بر‬‫میکروکنترلر‬
ARM 7
LPC 2368
‫نویسنده‬‫و‬‫گردآورنده‬:
‫محمدامین‬‫امجدی‬
Mohammad Amin Amjadi
amjadima@gmail.com
amjadima.ir
‫اول‬ ‫ویرایش‬
2
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫مقدمه‬
‫کنترلر‬ ‫میکرو‬ ‫با‬ ‫کار‬ ‫و‬ ‫میکروکنترلر‬ ‫کاربرد‬ ‫و‬ ‫مفاهیم‬ ‫با‬ ‫ریزپردازنده‬ ‫درس‬ ‫در‬avr. ‫شدیم‬ ‫آشنا‬
‫میکروکنترلر‬ ‫با‬ ‫خواهیم‬ ‫می‬ ‫حال‬Arm. ‫دهیم‬ ‫انجام‬ ‫عملی‬ ‫بصورت‬ ‫را‬ ‫شده‬ ‫مطرح‬ ‫مباحث‬ ‫و‬ ‫شویم‬ ‫آشنا‬
‫معرفی‬ ‫به‬ ‫اینجا‬ ‫در‬Lpc2368: ‫پردازیم‬ ‫می‬
‫میکرو‬Lpc2368‫میکروکنترلرهای‬ ‫سری‬ ‫از‬ARM 7‫نوع‬ ‫از‬ ‫آنها‬ ‫هسته‬ ‫که‬ ،ARM7TDMI‫نوع‬ ‫از‬ ‫آن‬ ‫معماری‬ ‫و‬ARMv4T
‫واحدپردازش‬ ‫دارای‬ ‫و‬32‫کاری‬ ‫فرکانس‬ ‫با‬ ‫بیتی‬72MHZ. ‫باشد‬ ‫می‬
‫میکروکنترلر‬ ‫این‬011‫میکرو‬ ‫داخلی‬ ‫واحدهای‬ ‫به‬ ‫که‬ ، ‫بوده‬ ‫پایه‬‫جمله‬ ‫از‬PLL،GPIO،ethernet،CAN،SPI،UART
،USB،c2
i،s2
i،ADC،DAC،PWM،SSP. ‫اند‬ ‫شده‬ ‫داده‬ ‫اختصاص‬
: ‫جانبی‬ ‫دستگاه‬ ‫اتصال‬
‫نیازمند‬ ، ‫نمائیم‬ ‫متصل‬ ‫جانبی‬ ‫دستگاه‬ ‫یک‬ ‫به‬ ‫را‬ ‫میکرو‬ ‫بتوانیم‬ ‫اینکه‬ ‫برای‬‫آن‬‫مق‬ ‫میکرو‬ ‫های‬ ‫پایه‬ ‫به‬ ، ‫بتوانیم‬ ‫تا‬ ‫هستیم‬‫بدهیم‬ ‫دار‬
‫واحد‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫منظور‬ ‫بدین‬ ، ‫بخوانیم‬ ‫را‬ ‫آنها‬ ‫مقدار‬ ‫یا‬ ‫و‬GPIO‫دسترسی‬ ‫میکرو‬ ‫های‬ ‫پایه‬ ‫به‬‫خواهیم‬‫داشت‬.
‫واحد‬ ‫در‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬GPIO‫فقط‬ ،“0”‫و‬“1”. )‫است‬ ‫دیجیتالی‬ ‫واحد‬ ‫یک‬ ( ‫است‬ ‫شده‬ ‫شناخته‬ ‫منطقی‬
‫رجیسترهای‬ ‫و‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫با‬ ‫ریزپردازنده‬ ‫درس‬ ‫در‬DDR،PORT‫و‬PIN‫در‬avr‫رجیسترها‬ ‫این‬ ‫عملکرد‬ ، ‫شدیم‬ ‫آشنا‬
‫در‬avr‫واحد‬ ‫با‬ ‫کار‬ ‫همانند‬GPIO‫در‬ARM. ‫باشد‬ ‫می‬
‫آنالوگ‬ ‫واحدهای‬ ‫نیازمند‬ ‫آنالوگ‬ ‫خروجی‬ ‫یا‬ ‫ورودی‬ ‫داشتن‬ ‫جهت‬ADC‫یا‬ )‫دیجیتال‬ ‫به‬ ‫آنالوگ‬ ‫(مبدل‬DAC‫دیجیتال‬ ‫(مبدل‬
)‫آنالوگ‬ ‫به‬‫که‬ ، ‫هستیم‬Lpc2368. ‫باشد‬ ‫می‬ ‫دارا‬ ‫را‬ ‫واحدها‬ ‫این‬
‫پر‬ ‫یک‬ ‫از‬ ‫که‬ ‫جانبی‬ ‫های‬ ‫دستگاه‬ ‫به‬ ‫اتصال‬ ‫جهت‬‫و‬‫همچون‬ ‫خاص‬ ‫تکل‬ethernet،c2
i،CAN،USB،s2
i،SPI‫استفاده‬
‫توسط‬ ‫ها‬ ‫پروتکل‬ ‫این‬ ‫تمامی‬ ‫که‬ ، ‫نمود‬ ‫استفاده‬ ‫مربوطه‬ ‫پروتکل‬ ‫از‬ ‫باید‬ ، ‫کنند‬ ‫می‬Lpc2368‫شود‬ ‫می‬ ‫پشتیبانی‬.
3
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
Keil
‫افزار‬ ‫نرم‬ ‫از‬Keil‫یک‬ ‫که‬IDE‫می‬ ‫استفاده‬ ‫میکرو‬ ‫روی‬ ‫ریزی‬ ‫برنامه‬ ‫قابل‬ ‫خروجی‬ ‫فایل‬ ‫ساخت‬ ‫و‬ ‫نویسی‬ ‫برنامه‬ ‫برای‬ ، ‫باشد‬ ‫می‬
. ‫شود‬
‫همچون‬ ‫دیگری‬ ‫کامپایلرهای‬IAR،ADS،Cross Work،Win Arm‫و‬Flow Code‫دارد‬ ‫وجود‬ ‫نیز‬.
‫نحوه‬Crack‫نمودن‬Keil:
0.‫آیکون‬ ‫روی‬‫گزینه‬ ‫سپس‬ ‫و‬ ‫نمائید‬ ‫کلیک‬ ‫راست‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬
‫بود‬ ‫فعال‬ ‫صورت‬ ‫در‬‫ن‬UAC(User Account Control‫ویندوزهای‬ ‫در‬ ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫که‬ ، ‫ویندوز‬ )Vista
،Seven،Win 8‫و‬Win 8.1(Blue)‫حالت‬ ‫در‬ ‫که‬ ‫برنامه‬ ‫به‬ ‫دادن‬ ‫اجازه‬ ‫جهت‬ ‫ای‬ ‫پنجره‬ ، ‫است‬ ‫فعال‬
administator‫گزینه‬ ‫و‬ ، ‫شود‬ ‫می‬ ‫باز‬ ‫شود‬ ‫اجرا‬Yes. ‫نمائید‬ ‫انتخاب‬ ‫را‬
2.‫منوی‬ ‫از‬‫گزینه‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬
3.‫پنجره‬ ‫راست‬ ‫سمت‬ ‫در‬، ‫شده‬ ‫باز‬CID. ‫نمائید‬ ‫کپی‬ ‫آنرا‬ ، ‫است‬ ‫رویت‬ ‫قابل‬
4.‫فایل‬Crack، ‫نمائید‬ ‫اجرا‬ ‫را‬‫قسمت‬ ‫در‬ ‫و‬CID،CID‫را‬ ‫شده‬ ‫کپی‬Paste. ‫نمائید‬
5.‫قسمت‬ ‫در‬Target‫گزینه‬ ،ARM: ‫نمائید‬ ‫انتخاب‬ ‫را‬
6.‫گزینه‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬
7.: ‫نمائید‬ ‫کپی‬ ‫را‬ ‫شده‬ ‫ایجاد‬ ‫کد‬
8.‫در‬ ‫را‬ ‫کد‬Keil‫قسمت‬ ‫و‬Paste: ‫نمائید‬
9.‫گزینه‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬
4
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫با‬ ‫کار‬ ‫شروع‬Keil
0.‫نمودن‬ ‫باز‬ ‫از‬ ‫پس‬Keil،‫منوی‬ ‫از‬‫گزینه‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬
2.، ‫نمود‬ ‫انتخاب‬ ‫را‬ ‫پروژه‬ ‫ذخیره‬ ‫محل‬ ‫باید‬ ‫حال‬، ‫نمائید‬ ‫ایجاد‬ ‫خود‬ ‫پروژه‬ ‫ذخیره‬ ‫برای‬ ‫پوشه‬ ‫یک‬ ‫نظرتان‬ ‫مورد‬ ‫مسیر‬ ‫در‬
‫سپس‬ ‫و‬‫گزینه‬ ‫و‬ ‫نموده‬ ‫وارد‬ ‫را‬ ‫خود‬ ‫پروژه‬ ‫نام‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬
3.‫نوع‬ ‫باید‬ ، ‫شده‬ ‫باز‬ ‫پنجره‬ ‫در‬CPU‫نمائیم‬ ‫می‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫که‬ ‫است‬ ‫میکرویی‬ ‫مدل‬ ‫همان‬ ‫که‬ ، ‫نمائیم‬ ‫انتخاب‬ ‫را‬ ‫خود‬
‫شاخه‬ ‫وارد‬ ،‫گزینه‬ ‫سپس‬ ‫و‬ ‫شده‬‫انتخاب‬ ‫را‬‫نموده‬‫روی‬ ‫سپس‬ ‫و‬‫کلیک‬
. ‫نمائید‬
4.‫شده‬ ‫باز‬ ‫پنجره‬ ‫در‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬
5.: ‫بنویسیم‬ ‫آن‬ ‫در‬ ‫را‬ ‫خود‬ ‫اصلی‬ ‫برنامه‬ ‫تا‬ ، ‫نمائیم‬ ‫ایجاد‬ ‫فایل‬ ‫یک‬ ‫باید‬ ‫حال‬
‫آیکون‬ ‫روی‬ ‫بر‬‫منوی‬ ‫از‬ ‫یا‬ ‫و‬ ‫نمائید‬ ‫کلیک‬‫گزینه‬‫با‬ ‫که‬ ، ‫نمائید‬ ‫انتخاب‬ ‫را‬
‫بر‬ ‫میان‬ ‫کلید‬Ctrl + N. ‫است‬ ‫فراخوانی‬ ‫قابل‬
‫یک‬Tab‫همانند‬ ،. ‫است‬ ‫شده‬ ‫ایجاد‬ ‫که‬ ‫است‬ ‫جدیدی‬ ‫فایل‬ ‫دهنده‬ ‫نشان‬ ‫که‬ ، ‫شود‬ ‫می‬ ‫ایجاد‬
6.‫آیکون‬ ‫روی‬ ‫بر‬‫منوی‬ ‫از‬ ‫یا‬ ‫و‬ ‫نمائید‬ ‫کلیک‬‫گزینه‬‫با‬ ‫که‬ ، ‫نمائید‬ ‫انتخاب‬ ‫را‬
‫بر‬ ‫میان‬ ‫کلید‬Ctrl + S. ‫است‬ ‫فراخوانی‬ ‫قابل‬
7.‫باشید‬ ‫داشته‬ ‫توجه‬ ‫فقط‬ ، ‫نمائید‬ ‫ذخیره‬ ‫دلخواه‬ ‫اسمی‬ ‫با‬ ‫را‬ ‫فایل‬ ‫این‬ ، ‫اید‬ ‫نموده‬ ‫ذخیره‬ ‫را‬ ‫خود‬ ‫پروژه‬ ‫که‬ ‫ای‬ ‫پوشه‬ ‫در‬
‫باید‬ ‫خود‬ ‫نظر‬ ‫مورد‬ ‫نام‬ ‫آخر‬ ‫در‬ ‫که‬“.c”‫یا‬“.cpp”‫را‬ ‫خود‬ ‫فایل‬ ‫نام‬ ‫بخواهیم‬ ‫اگر‬ ‫مثال‬ ‫؛‬ ‫نمائید‬ ‫وارد‬ ‫را‬“main”
‫باید‬ ‫بگذاریم‬“main.c”‫یا‬ ‫و‬“main.cpp”‫وار‬ ‫را‬‫سپس‬ ‫و‬ ‫نمائیم‬ ‫د‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬
8.: ‫نمائیم‬ ‫اضافه‬ ‫خود‬ ‫پروژه‬ ‫به‬ ‫را‬ ‫شده‬ ‫ذخیره‬ ‫فایل‬ ‫باید‬ ‫حال‬
‫در‬‫قسمت‬ ‫برنامه‬ ‫چپ‬ ‫سمت‬Project: ‫دارد‬ ‫وجود‬
5
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫توان‬ ‫می‬‫ید‬‫گروه‬ ‫به‬ ‫را‬ ‫خود‬ ‫کد‬‫گروه‬ ‫یک‬ ‫یا‬ ‫و‬‫اضافه‬ ‫جدید‬‫نمائید‬.
( ‫موجود‬ ‫های‬ ‫گزینه‬ ‫از‬ ‫یکی‬ ‫روی‬ ‫گروه‬ ‫یک‬ ‫ایجاد‬ ‫برای‬Target 1،Source Group 1‫یا‬ ‫و‬LPC2300.s‫راست‬ )
: ‫نمائید‬ ‫کلیک‬
‫گزینه‬‫نمائید‬ ‫انتخاب‬ ‫را‬‫ن‬ ‫سپس‬ ‫و‬ ،‫سپس‬ ‫و‬ ‫نمائید‬ ‫وارد‬ ‫را‬ ‫شده‬ ‫ایجاد‬ ‫گروه‬ ‫ام‬Enter. ‫بزنید‬ ‫را‬
‫گزینه‬ ‫سپس‬ ‫و‬ ‫نمائید‬ ‫کلیک‬ ‫راست‬ ‫خود‬ ‫نظر‬ ‫مورد‬ ‫گروه‬ ‫روی‬ ‫بر‬: ‫نمائید‬ ‫انتخاب‬ ‫را‬
‫روی‬ ‫وسپس‬ ‫انتخاب‬ ‫را‬ ‫اید‬ ‫نموده‬ ‫ذخیره‬ ‫و‬ ‫ایجاد‬ ‫که‬ ‫را‬ ‫فایلی‬ ‫حال‬. ‫بزنید‬
9.‫اینجا‬ ‫(در‬ ‫برنامه‬ ‫اصلی‬ ‫فایل‬ ‫در‬main.c‫خود‬ ‫برنامه‬ ‫کد‬ ‫باید‬ ): ‫نمائید‬ ‫وارد‬ ‫را‬ ‫زیر‬ ‫کد‬ ‫؛‬ ‫بنویسیم‬ ‫را‬
#include "Lpc23xx.h"
int main()
{
while(1)
{
}
}
01.‫ششم‬ ‫گام‬ ‫(در‬ ‫نمائید‬ ‫ذخیره‬ ‫را‬ ‫خود‬ ‫کد‬. )‫است‬ ‫شده‬ ‫ذکر‬ ‫نمودن‬ ‫ذخیره‬ ‫های‬ ‫روش‬
00.‫هیچ‬ ‫کدمان‬ ‫آیا‬ ‫که‬ ، ‫ببینیم‬ ‫خواهیم‬ ‫می‬ ‫حال‬error‫یا‬warning: ‫نه‬ ‫یا‬ ‫دارد‬ ‫ای‬
‫آیکون‬()‫یا‬(): ‫نمائید‬ ‫اتخاب‬ ‫را‬
‫منوی‬ ‫از‬ ‫یا‬ ‫و‬‫گزینه‬‫یا‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬
‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬‫ولی‬ ‫کند‬ ‫می‬ ‫اسمبل‬ ‫و‬ ‫کامپایل‬ ‫را‬ ، ‫اند‬ ‫کرده‬ ‫تغییر‬ ‫که‬ ‫هایی‬ ‫فایل‬
‫فایل‬ ‫دو‬ ‫هر‬ ‫و‬ ‫کند‬ ‫می‬ ‫اسمبل‬ ‫و‬ ‫کامپایل‬ ‫را‬ ‫ها‬ ‫فایل‬ ‫تمام‬object‫خروجی‬ ‫به‬ ‫مربوط‬ ‫که‬
‫(فایل‬ ‫سازند‬ ‫می‬ ‫را‬ ‫است‬ ‫کامپایل‬hex‫توضیحات‬ ، ‫شود‬ ‫می‬ ‫ساخته‬ ‫روش‬ ‫دو‬ ‫هر‬ ‫در‬ ‫پروژه‬ ‫بودن‬ ‫تنظیم‬ ‫صورت‬ ‫در‬ ‫نیز‬
‫نم‬ ‫تنظیم‬ ‫به‬ ‫مربوط‬‫فایل‬ ‫ساخت‬ ‫جهت‬ ‫پروژه‬ ‫ودن‬hex)‫است‬ ‫شده‬ ‫ذکر‬ ‫بعدی‬ ‫گام‬ ‫در‬ ‫میکرو‬ ‫نمودن‬ ‫پروگرام‬ ‫برای‬
6
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫نتیجه‬ ، ‫برنامه‬ ‫درپایین‬build( ‫پروژه‬error،warning،Program Size: ‫است‬ ‫مشاهده‬ ‫قابل‬ )
02.‫فایل‬ ‫تا‬ ‫نمائیم‬ ‫تنظیم‬ ‫را‬ ‫پروژه‬ ‫خواهیم‬ ‫می‬ ‫حال‬hex: ‫شود‬ ‫ساخته‬ ‫میکرو‬ ‫روی‬ ‫نمودن‬ ‫پروگرام‬ ‫جهت‬
‫آیکون‬(‫منوی‬ ‫از‬ ‫یا‬ ‫و‬ ‫نمائید‬ ‫انتخاب‬ ‫را‬ )‫گزینه‬
‫بر‬ ‫میان‬ ‫کلید‬ ‫با‬ ‫که‬ ‫نمائید‬ ‫انتخاب‬ ‫را‬Alt+F7‫فراخوانی‬ ‫قابل‬
‫است‬‫قسمت‬ ‫از‬ ‫اگر‬ ‫دوم‬ ‫روش‬ ‫در‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ ‫؛‬Project،‫کدنویسی‬ ‫حال‬ ‫در‬ ‫یا‬ ‫و‬ ‫باشد‬ ‫انتخاب‬
، ‫باشیم‬Target Options‫قسمت‬ ‫از‬ ‫مثال‬ ‫اگر‬ ‫و‬ ، ‫شود‬ ‫می‬ ‫باز‬Project،‫سپس‬ ‫و‬ ‫نمائیم‬ ‫انتخاب‬ ‫را‬Alt
+ F7‫فایل‬ ‫به‬ ‫مربوط‬ ‫تنظیمات‬ ‫همان‬ ‫که‬ ‫انتخابی‬ ‫گزینه‬ ‫به‬ ‫مربوط‬ ‫تنظیمات‬ ، ‫بفشاریم‬ ‫را‬main.c. ‫شود‬ ‫می‬ ‫باز‬ ‫است‬
‫سربرگ‬ ‫شده‬ ‫باز‬ ‫پنجره‬ ‫در‬‫سپس‬ ‫و‬ ‫نموده‬ ‫انتخاب‬ ‫را‬‫به‬ ‫مربوط‬ ‫تیک‬‫سپس‬ ‫و‬ ‫نمائید‬ ‫فعال‬ ‫را‬
. ‫نمائید‬ ‫انتخاب‬ ‫را‬
‫اگر‬ ‫حال‬‫گزینه‬Build‫(گام‬ ‫نمائید‬ ‫انتخاب‬ ‫را‬02‫همنام‬ ‫فایلی‬ ، ‫اید‬ ‫نموده‬ ‫ذخیره‬ ‫را‬ ‫خود‬ ‫پروژه‬ ‫که‬ ‫جایی‬ ‫همان‬ ‫در‬ ، )
‫پسوند‬ ‫با‬ ‫پروژه‬ ‫با‬“.h”‫ایجاد‬، ‫شود‬ ‫می‬. ‫شود‬ ‫می‬ ‫استفاده‬ ‫میکرو‬ ‫روی‬ ‫نمودن‬ ‫پروگرام‬ ‫برای‬ ‫که‬
7
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫و‬ ‫نویسی‬ ‫برنامه‬ ‫نکات‬Keil
0.‫زبان‬ ‫به‬ ‫باید‬ ، ‫نویسیم‬ ‫می‬ ‫که‬ ‫ای‬ ‫برنامه‬c‫باشد‬‫و‬ ‫؛‬‫زبان‬ ‫کدنویسی‬ ‫برای‬c++‫توسط‬ ‫که‬ ‫مناسب‬ ‫گرامر‬ ‫به‬Keil‫پشتیبانی‬
. ‫نمود‬ ‫دقت‬ ‫باید‬ ، ‫شود‬
2.‫در‬Keil 5‫فایل‬ ‫یک‬ ‫بخواهیم‬ ‫اگر‬: ‫نمود‬ ‫طی‬ ‫را‬ ‫زیر‬ ‫مراحل‬ ‫توان‬ ‫می‬ ، ‫نمائیم‬ ‫اضافه‬ ‫پروژه‬ ‫به‬ ‫و‬ ‫ایجاد‬
2.0.‫روی‬ ‫بر‬: ‫نمائید‬ ‫کلیک‬ ‫راست‬ ‫فایل‬ ‫نمودن‬ ‫اضافه‬ ‫و‬ ‫ایجاد‬ ‫جهت‬ ‫نظر‬ ‫مورد‬ ‫گروه‬
2.2.‫گزینه‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬
2.3.‫فایل‬ ‫نام‬ ‫و‬ ‫نوع‬ ، ‫شده‬ ‫باز‬ ‫پنجره‬ ‫در‬‫نمائید‬ ‫انتخاب‬ ‫را‬ ‫خود‬ ‫نظر‬ ‫مورد‬‫سپس‬ ‫و‬. ‫نموده‬ ‫انتخاب‬ ‫را‬
3.‫با‬ ‫واال‬ ، ‫باشند‬ ‫داشته‬ ‫خالی‬ ‫خط‬ ‫یک‬ ‫خود‬ ‫آخر‬ ‫خط‬ ‫در‬ ‫باید‬ ‫شوند‬ ‫می‬ ‫اضافه‬ ‫پروژه‬ ‫به‬ ‫که‬ ‫های‬ ‫فایل‬ ‫تمام‬warning‫زیر‬
: ‫شویم‬ ‫می‬ ‫مواجه‬
4.‫روی‬ ‫که‬ ‫وقتی‬Build. ‫شوند‬ ‫می‬ ‫بررسی‬ ‫سپس‬ ‫و‬ ‫شوند‬ ‫می‬ ‫ذخیره‬ ‫خودکار‬ ‫بصورت‬ ‫ها‬ ‫فایل‬ ، ‫میزنیم‬
5.‫وق‬‫کدمان‬ ‫در‬ ‫که‬ ‫تی‬،‫خط‬‫نویسیم‬ ‫می‬ ‫را‬ ‫زیر‬‫فایل‬ ،“lpc23xx.h”‫خود‬ ‫هدرهای‬ ‫در‬ ‫باید‬Keil. ‫باشد‬ ‫موجود‬
#include <Lpc23xx.h>
8
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
6.، ‫کدمان‬ ‫در‬ ‫که‬ ‫وقتی‬‫فایل‬ ، ‫نویسیم‬ ‫می‬ ‫را‬ ‫زیر‬ ‫خط‬“lpc23xx.h”‫خود‬ ‫هدرهای‬ ‫در‬ ‫باید‬Keil‫مربوط‬ ‫پوشه‬ ‫در‬ ‫یا‬ ‫و‬
‫پروژه‬ ‫به‬. ‫باشد‬ ‫موجود‬
#include “Lpc23xx.h”
7.‫در‬Keil،V5.0.5.15‫فایل‬ ‫همانند‬ ‫میکروها‬ ‫به‬ ‫مربوط‬ ‫هدر‬ ‫های‬ ‫فایل‬ ،“lpc23xx.h”‫مشخصات‬ ‫و‬CPU‫به‬ ‫که‬ ‫ها‬
‫از‬ ‫نسخه‬ ‫این‬ ‫با‬ ‫توان‬ ‫نمی‬ ‫پس‬ ، ‫ندارد‬ ‫وجود‬ ، ‫نمودیم‬ ‫می‬ ‫انتخاب‬ ‫پروژه‬ ‫یک‬ ‫ایزد‬ ‫هنگام‬Keil، ‫نمود‬ ‫ایجاد‬ ‫را‬ ‫پروژه‬ ‫یک‬
‫آنرا‬ ‫بتوان‬ ‫که‬Build‫همچون‬ ‫نیاز‬ ‫مورد‬ ‫های‬ ‫فایل‬ ‫خودمان‬ ‫آنکه‬ ‫مگر‬ ، ‫نمود‬“lpc23xx.h”‫پ‬ ‫در‬ ‫را‬‫کپی‬ ‫پروژه‬ ‫وشه‬
‫یا‬ ‫و‬ ، ‫نمائیم‬‫مجبوریم‬‫نسخه‬ ‫با‬ ‫را‬ ‫خود‬ ‫پروژه‬4! ‫نمائیم‬ ‫ایجاد‬
8.‫حلقه‬ ‫یک‬ ، ‫نویسیم‬ ‫می‬ ‫میکرو‬ ‫برای‬ ‫که‬ ‫ای‬ ‫برنامه‬ ‫در‬ ‫شود‬ ‫می‬ ‫توصیه‬while‫تا‬ ، ‫بنویسیم‬ ‫پایان‬ ‫بدون‬cpu، ‫میکرو‬
. ‫باشد‬ ‫داشته‬ ‫اجرا‬ ‫برای‬ ‫دستوری‬ ‫همیشه‬
9.‫داخل‬ ، ‫شود‬ ‫تعریف‬ ‫زیر‬ ‫بصورت‬ ‫متغییری‬ ‫که‬ ‫وقتی‬SRAM: ‫شود‬ ‫می‬ ‫ذخیره‬ ‫میکرو‬
int x ;
‫که‬ ‫اکنون‬x‫حافظه‬ ‫داخل‬SRAM، ‫است‬ ‫شده‬ ‫تعریف‬. ‫است‬ ‫دهی‬ ‫مقدار‬ ‫و‬ ‫تغییر‬ ‫قابل‬ ‫برنامه‬ ‫اجرای‬ ‫طول‬ ‫در‬
01.‫حافظه‬ ‫داخل‬ ، ‫شود‬ ‫تعریف‬ ‫زیر‬ ‫بصورت‬ ‫متغییری‬ ‫که‬ ‫وقتی‬Flash: ‫شود‬ ‫می‬ ‫ذخیره‬
const int x = 1 ;
const‫حافظه‬ ‫در‬ ‫متغییر‬ ‫ذخیره‬ ‫دهنده‬ ‫نشان‬Flash‫متغییر‬ ‫و‬ ، ‫باشد‬ ‫می‬‫مقدار‬ ‫حتما‬ ‫باید‬ ‫تعریف‬ ‫با‬ ‫همراه‬‫شود‬ ‫دهی‬
‫آن‬ ‫تغییر‬ ‫امکان‬ ‫و‬‫که‬ ‫متغییری‬ ‫به‬ ‫اگر‬ ‫و‬ ، ‫ندارد‬ ‫وجود‬ ‫برنامه‬ ‫اجرای‬ ‫طول‬ ‫در‬Const‫با‬ ‫بدهیم‬ ‫مقدار‬ ‫است‬error‫زیر‬
: ‫شویم‬ ‫می‬ ‫مواجه‬
00.‫که‬ ‫صورتی‬ ‫در‬x‫بصورت‬const‫با‬ ، ‫باشد‬ ‫نشده‬ ‫اولیه‬ ‫دهی‬ ‫مقدار‬ ‫و‬ ، ‫است‬ ‫شده‬ ‫تعریف‬warning‫می‬ ‫مواجه‬ ‫زیر‬
: ‫شویم‬
02.‫با‬ ، ‫نشود‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫و‬ ، ‫شود‬ ‫تعریف‬ ‫متغییر‬ ‫یک‬ ‫که‬ ‫صورتی‬ ‫در‬warning: ‫شویم‬ ‫می‬ ‫مواجه‬ ‫زیر‬
03.‫متغییرها‬‫و‬ ‫شوند‬ ‫تعریف‬ ‫بالک‬ ‫ابتدای‬ ‫در‬ ‫باید‬‫تعریف‬ ‫بالک‬ ‫ابتدای‬ ‫در‬ ‫متغییری‬ ‫اگر‬‫ن‬‫با‬ ، ‫شود‬warning‫مواجه‬ ‫زیر‬
: ‫شویم‬ ‫می‬
04.‫حلقه‬ ‫نوشتن‬ ‫در‬ ، ‫قبل‬ ‫نکته‬ ‫به‬ ‫توجه‬ ‫با‬for‫؟‬ ‫است‬ ‫درست‬ ‫بنظرتون‬ ‫زیر‬ ‫کد‬ ، ‫باشیم‬ ‫داشته‬ ‫دقت‬ ‫باید‬
int main()
{
//My Code 1
for(int i = 0 ; i < 100 ; i++)
{
//My Code 2
}
}
9
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
، ‫که‬ ‫است‬ ‫این‬ ‫قبل‬ ‫صفحه‬ ‫در‬ ‫شده‬ ‫نوشته‬ ‫کد‬ ‫مشکل‬int i‫بدنه‬ ‫داخل‬ ‫را‬for‫نکته‬ ‫به‬ ‫توجه‬ ‫با‬ ، ‫ایم‬ ‫نموده‬ ‫تعریف‬
: ‫است‬ ‫زیر‬ ‫بصورت‬ ‫درست‬ ‫کد‬ ‫پس‬ ، ‫شوند‬ ‫تعریف‬ ‫بالک‬ ‫ابتدای‬ ‫در‬ ‫باید‬ ‫متغییرها‬ ‫قبل‬
int main()
{
int i;
//My Code 1
for(i = 0 ; i < 100 ; i++)
{
//My Code 2
}
}
‫به‬ ‫بستگی‬ ‫و‬ ، ‫هستند‬ ‫درست‬ ‫دو‬ ‫هر‬ ‫که‬ ‫نوشت‬ ‫توان‬ ‫می‬ ‫زیر‬ ‫صورت‬ ‫دو‬ ‫به‬ ، ‫باشیم‬ ‫داشته‬ ‫تودرتو‬ ‫حلقه‬ ‫دو‬ ‫اگر‬ ‫حال‬
: ‫بنویسیم‬ ‫صورت‬ ‫کدام‬ ‫به‬ ‫که‬ ‫دارد‬ ‫کدمان‬
int main()
{
int i;
int j;
//My Code 1
for(i = 0 ; i < 100 ; i++)
{
//My Code 2
for(j = 100 ; j > i ; j--)
{/*My Code 3*/}
}
}
int main()
{
int i;
//My Code 1
for(i = 0 ; i < 100 ; i++)
{
int j;
//My Code 2
for(j = 100 ; j > i ; j--)
{/*My Code 3*/}
}
}
05.‫هیچ‬ ‫به‬ ‫و‬ ‫شود‬ ‫اجرا‬ ‫مدام‬ ‫که‬ ‫بنویسیم‬ ‫حلقه‬ ‫یک‬ ‫اگر‬‫وجه‬، ‫بنویسیم‬ ‫حلقه‬ ‫این‬ ‫از‬ ‫بد‬ ‫کدی‬ ‫اگر‬ ، ‫نشویم‬ ‫خارج‬ ‫حلقه‬ ‫از‬
‫با‬ ‫که‬ ، ‫زیر‬ ‫کد‬ ‫همانند‬ ، ‫شد‬ ‫نخواهند‬ ‫اجرا‬ ‫هرگز‬warning: ‫شویم‬ ‫می‬ ‫مواجه‬
int main()
{
//My Code 1
while(1)
{
//My Code 2 , without break
}
// My Code 3 . never execution
}
06.‫با‬ ، ‫شود‬ ‫تعریف‬ ‫بار‬ ‫یک‬ ‫از‬ ‫بیش‬ ‫متغییر‬ ‫یک‬ ‫اگر‬error: ‫شویم‬ ‫می‬ ‫مواجه‬ ‫زیر‬
int main()
{
int x;
int x;
}
11
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫که‬ ‫است‬ ‫واضح‬ ، ‫قبل‬ ‫صفحه‬ ‫کد‬ ‫در‬x‫نباید‬ ‫متغییر‬ ‫یک‬ ‫اینکه‬ ‫به‬ ‫توجه‬ ‫با‬ ، ‫است‬ ‫شده‬ ‫تعریف‬ ‫دوبار‬‫تعر‬ ‫یکبار‬ ‫از‬ ‫بیش‬‫یف‬
‫را‬ ‫فایل‬ ‫یک‬ ‫وقتی‬ ، ‫باشیم‬ ‫داشته‬ ‫توجه‬ ‫باید‬ ‫پس‬ ، ‫شود‬include‫آن‬ ‫متغییرهای‬ ‫با‬ ‫همنامی‬ ‫متغییر‬ ‫هیچ‬ ، ‫کنیم‬ ‫می‬
. ‫باشیم‬ ‫نداشته‬ ‫فایل‬
07.‫متغییر‬ ‫یک‬ ‫به‬ ‫دهی‬ ‫مقدار‬int: ‫است‬ ‫پذیر‬ ‫امکان‬ ‫زیر‬ ‫های‬ ‫بصورت‬
‫عدد‬ ‫خواهیم‬ ‫می‬029‫یک‬ ‫در‬ ‫را‬int‫عدد‬ ‫به‬ ‫دهیم‬ ‫قرار‬029: ‫نمائید‬ ‫توجه‬
4 bit : L(Low)4 bit : H(High)
Bit#01234567
10000001
1H(Hex)8H(Hex)
07.0.: ‫دهی‬ ‫ده‬ ، ‫دهی‬ ‫مقدار‬
int x = 129 ;
07.2.‫مقدار‬‫دهی‬: ‫شیفت‬ ‫عملگر‬ ‫طریق‬ ‫از‬ ‫ها‬ ‫بیت‬ ‫به‬
int x = (1 << 0) | (1 << 7);
07.3.‫مبنای‬ ‫در‬ ‫دهی‬ ‫مقدار‬16(Hex: )‫عدد‬Hex‫نماد‬ ‫از‬ ‫بعد‬ ‫را‬“0x”: ‫نویسیم‬ ‫می‬
int x = 0x81;
08.‫یابد‬ ‫کاهش‬ ‫برنامه‬ ‫کد‬ ‫حجم‬ ‫تا‬ ‫شود‬ ‫استفاده‬ ‫مناسب‬ ‫نوع‬ ‫از‬ ‫متغییر‬ ‫تعریف‬ ‫برای‬ ‫شود‬ ‫سعی‬.
: ‫است‬ ‫مشاهده‬ ‫قابل‬ ، ‫دارند‬ ‫را‬ ‫کاربردها‬ ‫بیشترین‬ ‫که‬ ‫متغییرهایی‬ ‫انواع‬ ‫زیر‬ ‫جدول‬ ‫در‬
Size (bits)Type
8char
16short
32int
32long
64long long
32float
64double
64long double
32pointers
11
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫پروگرامر‬
: ‫پروگرامر‬ ‫نمای‬
‫روی‬ ‫را‬ ‫است‬ ‫متصل‬ ‫آنها‬ ‫به‬ ‫سفید‬ ‫و‬ ‫سبز‬ ‫های‬ ‫سیم‬ ‫باال‬ ‫شکل‬ ‫در‬ ‫که‬ ‫هدر‬ ‫پین‬ ‫دو‬ ، ‫ابتدا‬ ‫در‬Mini Lpc Programmer‫لحیم‬
‫حدود‬ ‫ولتاژی‬ ‫دارای‬ ‫سبز‬ ‫سیم‬ ‫به‬ ‫متصل‬ ‫پین‬ ، ‫نمائید‬5v‫سبز‬ ‫سیم‬ ‫متصل‬ ‫پین‬ ‫و‬ ‫بوده‬Gnd. ‫بوده‬
12
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫پروگرامر‬ ‫وسایل‬ ‫اتصال‬ ‫محل‬
‫خازن‬ ‫منفی‬ ‫و‬ ‫مثبت‬ ‫های‬ ‫پایه‬ ‫به‬10uf. ‫نمائید‬ ‫دقت‬
‫سوئیچ‬ ‫دیپ‬2‫های‬ ‫پایه‬ ‫اتصال‬ ‫برای‬ ، ‫تایی‬98‫و‬99‫به‬Mini Lpc Programmer‫پروگرام‬ ‫هنگام‬ ‫به‬ ‫فقط‬ ‫و‬ ، ‫باشد‬ ‫می‬
‫از‬ ‫استفاده‬ ‫یا‬ ‫و‬ ‫نمودن‬UART0‫باید‬ ‫کامپیوتر‬ ‫با‬ ‫ارتباط‬ ‫برای‬ON‫که‬ ‫شود‬ ‫می‬ ‫توصیه‬ ‫واال‬ ‫باشند‬off. ‫باشد‬
‫سوئیچ‬ ‫دیپ‬4: ‫تایی‬
‫کلید‬0‫اتصال‬ ‫برقرای‬ ‫برای‬ :GND‫باال‬ ‫شکل‬ ‫در‬ ‫که‬ ‫هایی‬ ‫پین‬ ‫به‬Gnd‫شده‬ ‫درج‬ ‫کنارشان‬ ‫در‬
‫کلید‬2‫اتصال‬ ‫برای‬ :3.3v‫باال‬ ‫شکل‬ ‫در‬ ‫که‬ ‫هایی‬ ‫پین‬ ‫به‬3.3‫شده‬ ‫درج‬ ‫کنارشان‬ ‫در‬
‫کلید‬3‫نمودن‬ ‫پروگرام‬ ‫برای‬ :
‫کلید‬4‫میکرو‬ ‫نمودن‬ ‫روشن‬ ‫برای‬ :
13
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫و‬ ‫مدار‬ ‫تغذیه‬ ‫اتصال‬ ‫نحوه‬Mini Lpc Programmer
: ‫سبز‬5v
: ‫سفید‬Gnd
14
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫میکرو‬ ‫نمودن‬ ‫پروگرام‬
‫از‬ ‫اینجا‬ ‫در‬ ‫نمودن‬ ‫پروگرام‬ ‫برای‬Mini Lpc Programmer‫برنامه‬ ‫و‬Flash Magic. ‫نمائیم‬ ‫می‬ ‫استفاده‬
: ‫باشند‬ ‫زیر‬ ‫جدول‬ ‫طبق‬ ‫باید‬ ‫ها‬ ‫پایه‬ ‫وضعیت‬ ، ‫میکرو‬ ‫نمون‬ ‫پروگرام‬ ‫برای‬
‫پایه‬89‫پایه‬ ‫به‬ ‫اتصال‬Rx،Mini Lpc Programmer
‫پایه‬88‫پایه‬ ‫به‬ ‫اتصال‬Tx،Mini Lpc Programmer
‫پایه‬71‫پایه‬ ‫به‬ ‫اتصال‬Rst،Mini Lpc Programmer
‫پایه‬35‫به‬ ‫اتصال‬Gnd
، ‫جدول‬ ‫در‬ ‫شده‬ ‫ذکر‬ ‫های‬ ‫پایه‬ ‫اتصال‬ ‫از‬ ‫پس‬Mini Lpc Programmer‫که‬ ‫نمائید‬ ‫توجه‬ ، ‫نمائید‬ ‫متصل‬ ‫کامپیوتر‬ ‫به‬ ‫را‬
Driver‫اتصال‬ ‫از‬ ‫پس‬ ، ‫باشید‬ ‫نموده‬ ‫نصب‬ ‫خود‬ ‫سیستم‬ ‫روی‬ ‫بر‬ ‫را‬ ‫آن‬Mini Lpc Programmer‫پورت‬ ‫یک‬ ، ‫کامپیوتر‬ ‫به‬
COM‫پورت‬ ‫شماره‬ ، ‫شود‬ ‫می‬ ‫ساخته‬COM. ‫باشید‬ ‫داشته‬ ‫نظر‬ ‫در‬ ‫را‬
‫پورت‬ ‫شماره‬ ‫مشاهده‬ ‫برای‬COM‫به‬Device Manager. ‫نمائید‬ ‫مراجعه‬ ‫ویندوز‬
‫برنامه‬Flash Magic: ‫دهید‬ ‫انجام‬ ‫را‬ ‫زیر‬ ‫تنظیمات‬ ‫و‬ ‫نمائید‬ ‫اجرا‬ ‫را‬
0.‫گزینه‬Select: ‫نمائید‬ ‫انتخاب‬ ‫را‬
‫شاخه‬ ‫زیر‬،. ‫نمائید‬ ‫انتخاب‬ ‫را‬
2.‫پورت‬ ‫شماره‬COM‫به‬ ‫مربوط‬ ،Mini Lpc Programmer: ‫نمائید‬ ‫انتخاب‬ ‫را‬
3.( ‫بیت‬ ‫انتقال‬ ‫نرخ‬Baud Rate: ‫نمائید‬ ‫انتخاب‬ ‫را‬ )
‫بین‬ ‫معموال‬ ، ‫انتقال‬ ‫نرخ‬19200‫و‬115200. ‫شود‬ ‫می‬ ‫انتخاب‬
4.: ‫نمائید‬ ‫وارد‬ ‫را‬ ‫میکرو‬ ‫به‬ ‫متصل‬ ‫کریستال‬ ‫مقدار‬
5.‫تیک‬ ‫نه‬ ‫یا‬ ‫است‬ ‫شده‬ ‫پروگرام‬ ‫درستی‬ ‫به‬ ‫میکرو‬ ‫آیا‬ ‫که‬ ‫شود‬ ‫بررسی‬ ، ‫میکرو‬ ‫شدن‬ ‫پروگرام‬ ‫از‬ ‫بعد‬ ‫اینکه‬ ‫جهت‬
. ‫نمائید‬ ‫فعال‬ ‫را‬
6.‫تیک‬‫حافظه‬ ، ‫میکرو‬ ‫شدن‬ ‫پروگرام‬ ‫از‬ ‫قبل‬ ‫تا‬ ، ‫نمائید‬ ‫فعال‬ ‫را‬Flash. ‫شود‬ ‫پاک‬
‫توانید‬ ‫می‬‫تیک‬، ‫هستند‬ ‫نیاز‬ ‫مورد‬ ‫که‬ ‫حافظه‬ ‫از‬ ‫هایی‬ ‫بالک‬ ‫فقط‬ ‫تا‬ ، ‫نمائید‬ ‫فعال‬ ‫را‬
. ‫شوند‬ ‫پاک‬
15
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫میکنیم‬ ‫چک‬ ‫حال‬‫ک‬‫شود‬ ‫می‬ ‫شناخته‬ ‫میکرو‬ ‫آیا‬ ‫ه‬‫؟‬‫منوی‬ ‫از‬، ‫گزینه‬: ‫نمائید‬ ‫انتخاب‬ ‫را‬
‫زیر‬ ‫شکل‬ ‫همانند‬ ‫ای‬ ‫پنجره‬ ‫در‬ ، ‫شود‬ ‫شناخته‬ ‫میکرو‬ ‫اگر‬Device ID‫و‬Bootloader Ver: ‫است‬ ‫مشاهده‬ ‫قابل‬
‫برنامه‬ ‫تنظیمات‬ ‫که‬ ‫صورتی‬ ‫در‬Flash Magic‫باشد‬ ‫خراب‬ ‫میکرو‬ ‫یا‬ ‫و‬ ‫باشد‬ ‫نشده‬ ‫انجام‬ ‫درستی‬ ‫به‬‫میکرو‬ ‫های‬ ‫پایه‬ ‫اتصال‬ ‫یا‬ ‫و‬
‫و‬Mini Lpc Programmer، ‫نباشد‬ ‫برقرار‬ ‫بدرستی‬: ‫شویم‬ ‫می‬ ‫مواجه‬ ‫زیر‬ ‫شکل‬ ‫همانند‬ ‫خطایی‬ ‫با‬
‫شماره‬ ‫که‬ ‫صورتی‬ ‫در‬‫پورت‬COM‫در‬Flash Magic‫اتصال‬ ‫یا‬ ‫و‬ ‫باشد‬ ‫نشده‬ ‫انتخاب‬ ‫درستی‬ ‫به‬Mini Lpc Programmer
: ‫شویم‬ ‫می‬ ‫مواجه‬ ‫زیر‬ ‫خطای‬ ‫با‬ ، ‫شود‬ ‫قطع‬ ‫کامپیوتر‬ ‫با‬
‫ب‬ ‫میکرو‬ ‫روی‬ ‫را‬ ‫خود‬ ‫برنامه‬ ‫خواهیم‬ ‫می‬ ‫حال‬: ‫ریزیم‬
0.‫روی‬ ‫بر‬‫فایل‬ ‫و‬ ‫بروید‬ ‫خود‬ ‫پروژه‬ ‫ذخیره‬ ‫محل‬ ‫به‬ ، ‫نمائید‬ ‫کلیک‬“.h”. ‫نمائید‬ ‫انتخاب‬ ‫را‬
2.‫روی‬ ‫بر‬. ‫نمائید‬ ‫کلیک‬
3.! ‫باشید‬ ‫صبور‬ ‫میکرو‬ ‫شدن‬ ‫پروگرام‬ ‫تا‬
16
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫دیاگرام‬ ‫بالک‬Lpc2368
‫داخلی‬ ‫واحدهای‬Lpc 2368: ‫آن‬ ‫های‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫همراه‬ ‫به‬
17
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫میکرو‬ ‫داخلی‬ ‫واحدهای‬
‫با‬ ‫مرتبط‬ ‫رجیسترهای‬ ‫با‬ ‫باید‬ ‫واحد‬ ‫هر‬ ‫با‬ ‫کار‬ ‫برای‬ ، ‫است‬ ‫مشاهده‬ ‫قابل‬ ‫میکرو‬ ‫داخلی‬ ‫واحدهای‬ ، ‫قبل‬ ‫صفحه‬ ‫دیاگرام‬ ‫بالک‬ ‫در‬
‫نمود‬ ‫کار‬ ‫واحد‬ ‫آن‬.
‫به‬ ‫بیشتر‬ ‫اطالعات‬ ‫کسب‬ ‫جهت‬ ‫توانید‬ ‫می‬ ‫که‬ ، ‫است‬ ‫خود‬ ‫خاص‬ ‫آدرس‬ ‫و‬ ‫عمکلرد‬ ‫دارای‬ ‫رجیستر‬ ‫هر‬User Manual‫میکرو‬
‫؛‬ ‫نمائید‬ ‫مراجعه‬‫سری‬ ‫رجیسترهای‬ ‫تمام‬ ‫زیر‬ ‫جدول‬ ‫در‬Lpc23xx: ‫است‬ ‫مشاهده‬ ‫قابل‬
‫رجیسترها‬ ‫شماره‬ ‫در‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬(a:b)‫اعداد‬ ‫از‬ ‫یکی‬ ‫جایگذاری‬ ‫معنای‬ ‫به‬a‫تا‬b، ‫همچنین‬ ‫و‬ ‫است‬(a,b)‫معنای‬ ‫به‬
‫جایگذاری‬a‫یا‬b: ً ‫مثال‬ ، ‫است‬PINSEL(0:10)‫رجیسترهای‬ ‫وجود‬ ‫معنای‬ ‫به‬PINSEL0،PINSEL1،PINSEL2،
PINSEL3‫و‬ ..... ،PINSEL10‫همچنین‬ ‫و‬ ‫است‬IO(0,2)_INT_EN_R‫رجیسترهای‬ ‫وجود‬ ‫معنای‬ ‫به‬IO0_INT_EN_R
‫و‬IO2_INT_EN_R. ‫است‬
Vectored Interrupt Controller (VIC)
VICVectAddr(0:31)VICIntEnClrVICIRQStatus
VICVectCntl(0:31)=
VICVectPriority0(0:31)
VICSoftIntVICFIQStatus
VICSoftIntClrVICRawIntr
VICProtectionVICIntSelect
VICSWPrioMaskVICIntEnable
Pin Connect Block
PINMODE(0:9)PINSEL(0:10)
General Purpose Input/Output (GPIO)
IOCLR(0:1)IOSET(0:1)IOPIN(0:1)
IODIR(0:1)
GPIO Interrupt Registers
IO(0,2)_INT_STAT_RIO(0,2)_INT_EN_FIO(0,2)_INT_EN_R
IO_INT_STATIO(0,2)_INT_CLRIO(0,2)_INT_STAT_F
PARTCFG
Fast I/O setup
FIO(0:4)PINFIO(0:4)MASKFIO(0:4)DIR
FIO(0:4)DIR(0:3,L,U)FIO(0:4)CLRFIO(0:4)SET
FIO(0:4)SET(0:3,L,U)FIO(0:4)PIN(0:3,L,U)FIO(0:4)MASK(0:3,L,U)
FIO(0:4)CLR(0:3,L,U)
18
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫میکرو‬ ‫رجیسترهای‬
Memory Accelerator Module (MAM)
MEMMAPMAMTIMMAMCR
Phase Locked Loop (PLL)
PLLSTATPLLCFGPLLCON
PLLFEED
Power Control
PCONPPCON
Clock Divider
CLKSRCSELUSBCLKCFGCCLKCFG
PCLKSEL(0:1)
External Interrupts
EXTMODEINTWAKEEXTINT
EXTPOLAR
Reset, reset source identification
RSIR
RSID, code security protection
CSPR
AHB configuration
AHBCFG(1:2)
System Controls and Status
SCS
19
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫میکرو‬ ‫رجیسترهای‬
MPMC(EMC) registers
DYNAMIC_MEM(0:3)_BASESTATIC_MEM(0:3)_BASE
External Memory Controller (EMC)
EMC_CONFIGEMC_STATEMC_CTRL
Dynamic RAM access registers
EMC_DYN_RD_CFGEMC_DYN_RFSHEMC_DYN_CTRL
EMC_DYN_SREXEMC_DYN_RASEMC_DYN_RP
EMC_DYN_WREMC_DYN_DALEMC_DYN_APR
EMC_DYN_XSREMC_DYN_RFCEMC_DYN_RC
EMC_DYN_CFG(0:3)EMC_DYN_MRDEMC_DYN_RRD
EMC_DYN_RASCAS(0:3)
static RAM access registers
EMC_STA_WAITOEN(0:3)EMC_STA_WAITWEN(0:3)EMC_STA_CFG(0:3)
EMC_STA_WAITWR(0:3)EMC_STA_WAITPAGE(0:3)EMC_STA_WAITRD(0:3)
EMC_STA_WAITTURN(0:3)
Timer (0:3)
T(0:3)TCT(0:3)TCRT(0:3)IR
T(0:3)MCRT(0:3)PCT(0:3)PR
T(0:3)CR(0:3)T(0:3)CCRT(0:3)MR(0:3)
T(0:3)CTCRT(0:3)EMR
Pulse Width Modulator (PWM) (0:1)
PWM(0:1)TCPWM(0:1)TCRPWM(0:1)IR
PWM(0:1)MCRPWM(0:1)PCPWM(0:1)PR
PWM(0:1)CR(0:3)PWM(0:1)CCRPWM(0:1)MR(0:6)
PWM(0:1)CTCRPWM(0:1)LERPWM(0:1)PCR
21
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫میکرو‬ ‫رجیسترهای‬
Universal Asynchronous Receiver Transmitter (0,2,3) (UART(0,2,3))
U(0,2,3)DLLU(0,2,3)THRU(0,2,3)RBR
U(0,2,3)IIRU(0,2,3)IERU(0,2,3)DLM
U(0,2,3)LSRU(0,2,3)LCRU(0,2,3)FCR
U(0,2,3)ICRU(0,2,3)ACRU(0,2,3)SCR
U(0,2,3)TERU(0,2,3)FDR
Universal Asynchronous Receiver Transmitter 1 (UART1)
U1DLLU1THRU1RBR
U1IIRU1IERU1DLM
U1MCRU1LCRU1FCR
U1SCRU1MSRU1LSR
U1TERU1FDRU1ACR
I2C Interface (0:2)
I2(0:2)DATI2(0:2)STATI2(0:2)CONSET
I2(0:2)SCLLI2(0:2)SCLHI2(0:2)ADR
I2(0:2)CONCLR
SPI0 (Serial Peripheral Interface 0)
S0SPDRS0SPSRS0SPCR
S0SPINTS0SPCCR
SSP(0:1) Controller
SSP(0:1)SRSSP(0:1)DRSSP(0:1)CR(0:1)
SSP(0:1)RISSSP(0:1)IMSCSSP(0:1)CPSR
SSP(0:1)DMACRSSP(0:1)ICRSSP(0:1)MIS
A/D Converter 0 (AD0)
AD0INTENAD0GDRAD0CR
AD0STATAD0DR(0:7)
D/A Converter
DACR
21
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫میکرو‬ ‫رجیسترهای‬
Real Time Clock (RTC)
RTC_CCRRTC_CTCRTC_ILR
RTC_CTIME(0:2)RTC_AMRRTC_CIIR
RTC_HOURRTC_MINRTC_SEC
RTC_DOYRTC_DOWRTC_DOM
RTC_CISSRTC_YEARRTC_MONTH
RTC_ALHOURRTC_ALMINRTC_ALSEC
RTC_ALDOYRTC_ALDOWRTC_ALDOM
RTC_PREINTRTC_ALYEARRTC_ALMON
RTC_PREFRAC
Watchdog
WDFEEDWDTCWDMOD
WDCLKSELWDTV
CAN CONTROLLERS AND ACCEPTANCE FILTER (1:2)
CAN_SFF_GRP_SACAN_SFF_SACAN_AFMR
CAN_EOTCAN_EFF_GRP_SACAN_EFF_SA
CAN_TX_SRCAN_LUT_ERRCAN_LUT_ERR_ADR
CAN(1:2)MODCAN_MSRCAN_RX_SR
CAN(1:2)ICRCAN(1:2)GSRCAN(1:2)CMR
CAN(1:2)EWLCAN(1:2)BTRCAN(1:2)IER
CAN(1:2)RIDCAN(1:2)RFSCAN(1:2)SR
CAN(1:2)TFI(1:3)CAN(1:2)RDBCAN(1:2)RDA
CAN(1:2)TDB(1:3)CAN(1:2)TDA(1:3)CAN(1:2)TID(1:3)
MultiMedia Card Interface(MCI) Controller
MCI_ARGUMENTMCI_CLOCKMCI_POWER
MCI_RESP(0:3)MCI_RESP_CMDMCI_COMMAND
MCI_DATA_CTRLMCI_DATA_LENMCI_DATA_TMR
MCI_CLEARMCI_STATUSMCI_DATA_CNT
MCI_FIFOMCI_FIFO_CNTMCI_MASK(0:1)
22
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫میکرو‬ ‫رجیسترهای‬
I2S Interface Controller (I2S)
I2S_TX_FIFOI2S_DAII2S_DAO
I2S_DMA(1:2)I2S_STATEI2S_RX_FIFO
I2S_RXRATEI2S_TXRATEI2S_IRQ
General-purpose DMA Controller
GPDMA_INT_TCCLRGPDMA_INT_TCSTATGPDMA_INT_STAT
GPDMA_RAW_INT_TCSTATGPDMA_INT_ERR_CLRGPDMA_INT_ERR_STAT
GPDMA_SOFT_BREQGPDMA_ENABLED_CHNSGPDMA_RAW_INT_ERR_STAT
GPDMA_SOFT_LSREQGPDMA_SOFT_LBREQGPDMA_SOFT_SREQ
GPDMA_SYNCGPDMA_CONFIG
DMA channel (0:1) registers
GPDMA_CH(0:1)_LLIGPDMA_CH(0:1)_DESTGPDMA_CH(0:1)_SRC
GPDMA_CH(0:1)_CFGGPDMA_CH(0:1)_CTRL
USB Controller
USB_INT_STAT
USB Device Interrupt Registers
DEV_INT_CLRDEV_INT_ENDEV_INT_STAT
DEV_INT_PRIODEV_INT_SET
USB Device Endpoint Interrupt Registers
EP_INT_CLREP_INT_ENEP_INT_STAT
EP_INT_PRIOEP_INT_SET
USB Device Endpoint Realization Registers
MAXPACKET_SIZEEP_INDEXREALIZE_EP
USB Device Command Reagisters
CMD_DATACMD_CODE
23
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫میکرو‬ ‫رجیسترهای‬
USB Device Data Transfer Registers
RX_PLENGTHTX_DATARX_DATA
USB_CTRLTX_PLENGTH
USB Device DMA Registers
DMA_REQ_SETDMA_REQ_CLRDMA_REQ_STAT
EP_DMA_ENEP_DMA_STATUDCA_HEAD
DMA_INT_ENDMA_INT_STATEP_DMA_DIS
EOT_INT_SETEOT_INT_CLREOT_INT_STAT
NDD_REQ_INT_SETNDD_REQ_INT_CLRNDD_REQ_INT_STAT
SYS_ERR_INT_SETSYS_ERR_INT_CLRSYS_ERR_INT_STAT
USB Host Controller
HC_CMD_STATHC_CONTROLHC_REVISION
HC_INT_DISHC_INT_ENHC_INT_STAT
HC_CTRL_HEAD_EDHC_PERIOD_CUR_EDHC_HCCA
HC_BULK_CUR_EDHC_BULK_HEAD_EDHC_CTRL_CUR_ED
HC_FM_REMAININGHC_FM_INTERVALHC_DONE_HEAD
HC_LS_THRHLDHC_PERIOD_STARTHC_FM_NUMBER
HC_RH_STATHC_RH_DESCBHC_RH_DESCA
HC_RH_PORT_STAT(1:2)
USB OTG Controller
OTG_INT_SETOTG_INT_ENOTG_INT_STAT
OTG_I2C_RXOTG_TIMEROTG_INT_CLR
OTG_I2C_CTLOTG_I2C_STSOTG_I2C_TX
USBPortSelOTG_I2C_CLKLOOTG_I2C_CLKHI
USBClkStUSBClkCtrl
24
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫میکرو‬ ‫رجیسترهای‬
USB Device Data Transfer Registers Ethernet MAC (32 bit data bus)
MAC_IPGRMAC_IPGTMAC_MAC(1:2)
MAC_SUPPMAC_MAXFMAC_CLRT
MAC_MCMDMAC_MCFGMAC_TEST
MAC_MRDDMAC_MWTDMAC_MADR
MAC_COMMANDMAC_SA(0:2)MAC_MIND
MAC_RXSTATUSMAC_RXDESCRIPTORMAC_STATUS
MAC_RXCONSUMEINDEXMAC_RXPRODUCEINDEXMAC_RXDESCRIPTORNUM
MAC_TXDESCRIPTORNUMMAC_TXSTATUSMAC_TXDESCRIPTOR
MAC_TSV(0:1)MAC_TXCONSUMEINDEXMAC_TXPRODUCEINDEX
MAC_FLOWCONTROLSTSMAC_FLOWCONTROLCNTMAC_RSV
MAC_RXFILTERWOLCLRMAC_RXFILTERWOLSTSMAC_RXFILTERCTRL
MAC_INTSTATUSMAC_HASHFILTERHMAC_HASHFILTERL
MAC_INTSETMAC_INTCLEARMAC_INTENABLE
MAC_MODULEIDMAC_POWERDOWN
25
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
General Purpose Input/Output ports(GPIO)
‫بین‬ ‫از‬011، ‫میکرو‬ ‫پایه‬71‫واحد‬ ‫به‬ ‫پایه‬GPIO. ‫است‬ ‫شده‬ ‫داده‬ ‫اختصاص‬
GPIO‫که‬71‫داده‬ ‫اختصاص‬ ‫آن‬ ‫به‬ ‫میکرو‬ ‫از‬ ‫پایه‬‫دارای‬ ، ‫است‬ ‫شده‬5‫پورت‬PORT0‫الی‬PORT4. ‫باشد‬ ‫می‬
‫به‬ ‫و‬ ‫شده‬ ‫داده‬ ‫اختصاص‬ )‫(فیزیکی‬ ‫خارجی‬ ‫پایه‬ ‫برخی‬ ‫به‬ ‫که‬ ، ‫بوده‬ ‫ها‬ ‫پین‬ ‫از‬ ‫ای‬ ‫مجموعه‬ ‫پورت‬ ‫هر‬‫نشده‬ ‫داده‬ ‫اختصاص‬ ‫برخی‬
. ‫است‬
‫و‬ ‫خارجی‬ ‫پایه‬ ‫دارای‬ ‫کنیم‬ ‫می‬ ‫کار‬ ‫آن‬ ‫با‬ ‫که‬ ‫ای‬ ‫پین‬ ‫که‬ ، ‫باشیم‬ ‫داشته‬ ‫توجه‬ ‫باید‬ ‫جانبی‬ ‫دستگاه‬ ‫اتصال‬ ‫و‬ ‫نویسی‬ ‫برنامه‬ ‫برای‬
. ‫نمود‬ ‫وصل‬ ‫سیم‬ ‫آن‬ ‫به‬ ‫بتوان‬ ‫تا‬ ‫باشد‬ ‫فیزیکی‬
‫پورت‬ ‫و‬ ‫پین‬ ‫شماره‬ ‫از‬ ‫باید‬ ‫و‬ ، ‫نیست‬ ‫شده‬ ‫شناخته‬ ‫پایه‬ ‫نام‬ ‫به‬ ‫چیزی‬ ‫نویسی‬ ‫کد‬ ‫در‬. ‫نمود‬ ‫استفاده‬
‫پایه‬ ‫از‬ ‫برخی‬‫ها‬‫پایه‬ ‫مثال‬ ، ‫است‬ ‫مشترک‬ ‫میکرو‬ ‫واحد‬ ‫چند‬ ‫بین‬98‫شماره‬ ‫پین‬ ،2‫واحد‬ ‫به‬ ‫مربوط‬ ‫که‬ ‫باشد‬ ‫می‬ ‫صفر‬ ‫پورت‬ ‫از‬
GPIO‫به‬ ‫مربوط‬ ‫پایه‬ ‫این‬ ‫همچنین‬ ‫و‬ ‫بوده‬TXD0‫واحد‬UART0. ‫باشد‬ ‫می‬ ‫نیز‬
: ‫پورت‬ ‫هر‬ ‫اطالعات‬
‫های‬ ‫جدول‬ ‫در‬‫بعد‬ ‫صفحه‬،‫هر‬ ‫اطالعات‬PORT. ‫است‬ ‫مشاهده‬ ‫قابل‬
‫در‬ ‫پایه‬ ‫آن‬ ‫که‬ ‫است‬ ‫هایی‬ ‫سایرنقش‬ ‫کننده‬ ‫مشخص‬ ‫همچنین‬ ‫و‬ ‫پین‬ ‫شماره‬ ، ‫پایه‬ ‫شماره‬ ، ‫پورت‬ ‫شماره‬ ‫شامل‬ ‫اطالعات‬ ‫این‬
. ‫نماید‬ ‫می‬ ‫ایفا‬ ‫میکرو‬
‫به‬ ‫اطالعات‬: ‫است‬ ‫شده‬ ‫داده‬ ‫نمایش‬ ‫صوت‬ ‫این‬
‫پایه‬ ‫شماره‬ |‫میکرو‬ ‫در‬ ‫پایه‬ ‫نقش‬
: ‫مثال‬‫قسمت‬ ‫در‬Port 0‫در‬‫دومین‬‫داریم‬ ‫سطر‬:
47 | P0 1,TD1,RXD3,SCL1
‫پایه‬71‫میکرو‬
P0,1‫صفر‬ ‫پورت‬ ‫از‬ ‫یک‬ ‫پین‬‫واحد‬ ‫به‬ ‫مربوط‬GPIO
TD1‫اطالعات‬ ‫ارسال‬ ‫پایه‬‫واحد‬ ‫به‬ ‫مربوط‬CAN 1
SCL1‫ورودی/خروجی‬ ‫کالک‬‫واحد‬ ‫به‬ ‫مربوط‬c 12
i
26
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫پورت‬ ‫هر‬ ‫اطالعات‬
PORT 0PORT 1PORT 2
46 | P0 0,RD1,TXD3,SDA1
47 | P0 1,TD1,RXD3,SCL1
98 | P0 2,TXD0
99 | P0 3,RXD0
81 | P0 4,I2SRC,RD2,CAP20
80 | P0 5,I2SRW,TD2,CAP21
79 | P0 6,I2SRD,SSEL1,MAT20
78 | P0 7,I2STC,SCK1,MAT21
77 | P0 8,I2STW,MOSO1,MAT22
76 | P0 9,I2STD,MOSI1,MAT23
48 | P0 10,TXD2,SDA2,MAT30
49 | P0 11,RXD2,SCL2,MAT31
62 | P0 15,TXD1,SCK0,SCK
63 | P0 16,RXD1,SSEL0,SSEL
61 | P0 17,CTS1,MISO0,MISO
60 | P0 18,DCD1,MOSI0,MOSI
59 | P0 19,DSR1,MCICLK,SDA1
58 | P0 20,DTR1,MCICMD,SCL1
57 | P0 21,RI1,MCIPWR,RD1
56 | P0 22,RTS1,MCIDAT0,TD1
9 | P0 23,AD00,I2SRC,CAP30
8 | P0 24,AD01,I2SRW,CAP31
7 | P0 25,AD02,I2SRD,TXD3
6 | P0 26,AD03,AOUT,RXD3
25 | P0 27,SDA0
24 | P0 28,SCL0
29 | P0 29,USB_D+
30 | P0 30,USB_D-
95 | P1 0,ENET_TXD0
94 | P1 1,ENET_TXD1
93 | P1 4,ENET_TX_EN
92 | P1 8,ENET_CRS
91 | P1 9,ENET_RXD0
90 | P1 10,ENET_RXD1
89 | P1 14,RX_ER
88 | P1 15,ENET_REF_CLK
87 | P1 16,ENET_MDC
86 | P1 17,ENET_MDIO
32 | P1 18,USBLED,PWM1
1,CAP10
33 | P1 19,CAP11
34 | P1 20,PWM12,SCK0
35 | P1 21,PWM13,SSEL0
36 | P1 22,MAT10
37 | P1 23,PWM14 , MISO 0
38 | P1 24,PWM15 , MISI 0
39 | P1 25,MAT11
40 | P1 26,PWM16,CAP00
43 | P1 27,CAP01
44 | P1 28,PCAP10,MAT00
45 | P1 29,PCAP11,MAT01
21 | P1 30,VBUS,AD04
20 | P1 31,SCK1,AD05
75 | P2 0,PWM11,TXD1
74 | P2 1,PWM12,RXD1
73 | P2 2,PWM13,CTS1
70 | P2 3,PWM14,DCD1
69 | P2 4,PWM15,DSR1
68 | P2 5,PWM16,DTR1
67 | P2 6,PCAP10,RI1
66 | P2 7,RD2,RTS1
65 | P2 8,TD2,TXD2
64 | P2 9,USBCON,RXD2,EXTIN0
53 | P2 10,INT0
52 | P2 11,INT1,MCID1,I2STC
51 | P2 12,INT2,MCID2,I2STW
50 | P2 13,INT3,MCID3,I2STD
PORT 3PORT 4
27 | P3 25,MAT00,PWM12
26 | P3 26,MAT01,PWM13
82 | P4 28,MAT20,TXD3
85 | P4 29,MAT21,RXD3
27
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫های‬ ‫ویژگی‬GPIO
‫های‬ ‫پورت‬0,1‫مد‬ ‫در‬Fast‫غیر‬ ‫و‬Fast(Slow)‫و‬ ‫هستند‬ ‫استفاده‬ ‫قابل‬PORT 2,3,4‫مدکاری‬ ‫دارای‬ ‫فقط‬Fast‫می‬
. ‫باشند‬
‫مد‬ ‫از‬ ‫فقط‬ ‫اینجا‬ ‫در‬ ‫ما‬Fast. ‫نمائیم‬ ‫می‬ ‫استفاده‬
: ‫استفاده‬ ‫مورد‬ ‫رجیسترهای‬
‫به‬ ‫مربوط‬ ‫های‬ ‫رجیستر‬ ، ‫نموده‬ ‫استفاده‬ ‫آن‬ ‫به‬ ‫مربوط‬ ‫رجیسترهای‬ ‫از‬ ‫باید‬ ‫میکرو‬ ‫واحد‬ ‫هر‬ ‫با‬ ‫کار‬ ‫جهت‬GPIO‫در‬ ‫توانید‬ ‫می‬ ‫را‬
: ‫نمائید‬ ‫مشاهده‬ ‫زیر‬ ‫جدول‬‫از‬ ‫منظور‬ ‫رجیستر‬ ‫نام‬ ‫در‬x‫تا‬ ‫صفر‬ ‫از‬ ‫که‬ ‫پورت‬ ‫شماره‬4. ‫باشد‬ ‫می‬ ، ‫بوده‬
‫ها‬ ‫پین‬‫ورودی/خروجی‬‫دسترسی‬ ‫امکان‬‫نمودن‬ ‫یک‬‫نمودن‬ ‫صفر‬‫خواندن‬
PIN 0 - 31FIOxDIRFIOxMASKFIOxSETFIOxCLRFIOxPIN
PIN 0 – 7FIOxDIR0FIOxMASK0FIOxSET0FIOxCLR0FIOxPIN0
PIN 8 - 15FIOxDIR1FIOxMASK1FIOxSET1FIOxCLR1FIOxPIN1
PIN 16 – 23FIOxDIR2FIOxMASK2FIOxSET2FIOxCLR2FIOxPIN2
PIN 24 - 31FIOxDIR3FIOxMASK3FIOxSET3FIOxCLR3FIOxPIN3
PIN 0 - 15FIOxDIRLFIOxMASKLFIOxSETLFIOxCLRLFIOxPINL
PIN 16 - 31FIOxDIRUFIOxMASKUFIOxSETUFIOxCLRUFIOxPINU
. ‫بوده‬ ‫صفر‬ ، ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫رجیسترها‬ ‫مقدار‬
‫باید‬ ، ‫کنیم‬ ‫کار‬ ‫آنها‬ ‫با‬ ‫بخواهیم‬ ‫که‬ ‫هایی‬ ‫پین‬MASK‫شان‬‫باشد‬ ‫صفر‬‫مقدار‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ ،MASK‫در‬ ‫ها‬ ‫پین‬ ‫تمام‬
‫رجیستر‬ ‫در‬ ‫تغییر‬ ‫به‬ ‫نیازی‬ ‫پس‬ ، ‫باشد‬ ‫می‬ ‫صفر‬ ‫ابتدا‬MASK‫واحد‬ ‫و‬ ‫ها‬ ‫پین‬ ‫با‬ ‫کار‬ ‫جهت‬GPIO‫؛‬ ‫نداریم‬‫جهت‬ ‫کدها‬ ‫در‬ ‫البته‬
‫بودن‬ ‫صفر‬ ‫دادن‬ ‫نشان‬ ‫و‬ ‫اطمینان‬MASK، ‫ها‬ ‫پین‬ ‫تمام‬MASK. ‫دهیم‬ ‫می‬ ‫قرار‬ ‫صفر‬ ‫با‬ ‫مساوی‬ ‫را‬
‫اگر‬DIR. ‫باشد‬ ‫می‬ ‫خروجی‬ ‫باشد‬ ‫یک‬ ‫اگر‬ ‫و‬ ‫ورودی‬ ، ‫باشد‬ ‫صفر‬ ‫پین‬ ‫یک‬
‫اینکه‬ ‫برای‬PORT0‫و‬PORT1‫مد‬ ‫در‬Fast‫فوق‬ ‫رجیسترهای‬ ‫با‬ ‫بتوانیم‬ ‫و‬ ‫بگیرند‬ ‫قرار‬‫پورت‬ ‫برای‬0‫و‬1‫بیت‬ ‫باید‬ ‫کارنمائیم‬
‫رجیستر‬ ‫از‬ ‫اول‬SCS: ‫نمائیم‬ ‫یک‬ ‫را‬
SCS = 1; // Enabel Fast Port( P0 , P1)
‫نکته‬‫رجیستر‬ ‫از‬ ‫بیتهایی‬ ‫شدن‬ ‫یک‬ ‫با‬ :FIOxSET‫خواهند‬ ‫تغییر‬ ‫بدون‬ ‫ها‬ ‫پین‬ ‫سایر‬ ‫و‬ ‫شوند‬ ‫می‬ ‫یک‬ ، ‫متناظرشان‬ ‫های‬ ‫پین‬ ،
‫رجیستر‬ ‫و‬ ‫؛‬ ‫ماند‬FIOxCLR‫نخواهند‬ ‫تغییر‬ ‫ها‬ ‫پین‬ ‫سایر‬ ‫و‬ ‫کند‬ ‫می‬ ‫صفر‬ ‫را‬ ، ‫اند‬ ‫شده‬ ‫یک‬ ‫که‬ ‫هایی‬ ‫بیت‬ ‫با‬ ‫متناظر‬ ‫های‬ ‫پین‬
. ‫کرد‬
‫از‬FIOxPIN‫پس‬ ، ‫شود‬ ‫می‬ ‫استفاده‬ ‫نیز‬ ‫ها‬ ‫پین‬ ‫به‬ ‫مستقیم‬ ‫مقداردهی‬ ‫و‬ ‫دسترسی‬ ‫جهت‬‫رجیستر‬ ‫این‬ ‫به‬ ‫که‬ ‫مقداری‬ ‫هر‬
. ‫شود‬ ‫می‬ ‫داده‬ ‫نسبت‬ ‫بیت‬ ‫آن‬ ‫متاظر‬ ‫های‬ ‫پین‬ ‫به‬ ، ‫شود‬ ‫داده‬
: ‫مثال‬
28
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫صفر‬ ‫پورت‬ ‫های‬ ‫پین‬ ‫کل‬ ، ‫مثال‬ ‫این‬ ‫در‬‫و‬ ‫شوند‬ ‫می‬ ‫صفر‬ ‫ثانیه‬ ‫یک‬ ‫سپس‬ ‫و‬ ، ‫یک‬ ‫ثانیه‬ ‫یک‬ ،‫این‬. ‫شود‬ ‫می‬ ‫تکرار‬ ‫روند‬
#include "Lpc23xx.h"
#include "delay.h"
int main()
{
SCS = 1;
FIO0MASK = 0;
FIO0DIR = 0xffffffff;
while(1)
{
FIO0SET = 0xffffffff;
delay_ms(500);
FIO0CLR = 0xffffffff;
delay_ms(500);
}
}
‫رجیستر‬ ‫هر‬ ‫بیت‬ ‫هر‬ ‫که‬ ‫نمائید‬ ‫توجه‬‫به‬ ‫مربوط‬ ‫شده‬ ‫ذکر‬‫واحد‬GPIO: ‫بوده‬ ‫پین‬ ‫یک‬ ‫به‬ ‫مربوط‬
Px.0Px.1Px.2Px.3Px.4Px.5……………………..Px.31
‫های‬ ‫پین‬ ‫بخواهیم‬ ‫اگر‬0‫و‬3‫و‬4‫به‬ ‫که‬ ‫مقداری‬ ، ‫نمائیم‬ ‫یک‬ ‫را‬ ‫صفر‬ ‫پورت‬ ‫از‬FIO0SET: ‫با‬ ‫است‬ ‫برابر‬ ‫دهیم‬ ‫می‬ ‫نسبت‬
01011000
: ‫نوشت‬ ‫توان‬ ‫می‬ ‫که‬
FIO0SET = 50;
FIO0SET = 0x32;
FIO0SET = (1 << 1) | (1<<3) | (1<<4);
‫رجیسترهای‬ ‫توان‬ ‫می‬FIOxSET‫و‬FIOxCLR‫رجیستر‬ ‫با‬ ‫را‬FIOxPIN: ‫نمود‬ ‫معادل‬ ‫زیر‬ ‫بصورت‬
int value = 0x85 // ‫دلخواه‬ ‫مقدار‬
FIO1PIN |= value;FIO1SET = value ; =>
FIO1PIN &= ~ value;FIO1CLR = value ; =>
FIOxPIN |= value;FIOxSET = value ; =>
FIOxPIN &= ~ value;FIOxCLR = value ; =>
29
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫داخلی‬ ‫های‬ ‫مقاومت‬
‫رجیستر‬ ‫از‬ ‫کار‬ ‫این‬ ‫برای‬ ، ‫نمود‬ ‫مشخص‬ ‫را‬ ‫آنها‬ ‫وضعیت‬ ‫توان‬ ‫می‬ ‫که‬ ، ‫هستند‬ ‫داخلی‬ ‫مقاومت‬ ‫دارای‬ ‫میکرو‬ ‫های‬ ‫پین‬ ‫از‬ ‫کدام‬ ‫هر‬
PINMODEy‫شود‬ ‫می‬ ‫استفاده‬‫پورت‬ ‫شماره‬ ‫اگر‬ ‫که‬x‫مقدار‬ ، ‫باشد‬y‫باید‬ ،2x‫یا‬2x+1‫باشد‬:
‫رجیستر‬‫مربوطه‬‫پین‬ ‫شماره‬‫پورت‬ ‫شماره‬
PINMODE0‫تا‬ ‫صفر‬05‫صفر‬ ‫پورت‬
PINMODE106‫تا‬30
PINMODE2‫تا‬ ‫صفر‬05‫یک‬ ‫پورت‬
PINMODE306‫تا‬30
PINMODE4‫تا‬ ‫صفر‬05‫دو‬ ‫پورت‬
PINMODE506‫تا‬30
PINMODE6‫تا‬ ‫صفر‬05‫سه‬ ‫پورت‬
PINMODE706‫تا‬30
PINMODE8‫تا‬ ‫صفر‬05‫چهار‬ ‫پورت‬
PINMODE906‫تا‬30
‫پورت‬ ‫برای‬x‫باید‬ ‫که‬‫از‬PINMODE(2x)‫و‬PINMODE(2x+1): ‫نمائیم‬ ‫استفاده‬
PINMODE(x)0123……3031
‫صفر‬ ‫پین‬‫یک‬ ‫پین‬……‫پین‬05
PINMODE(2x+1)0123……3031
‫پین‬06‫پین‬07……‫پین‬30
، ‫بخواهیم‬ ‫اگر‬ ‫مثال‬PINMODE‫پین‬ ‫به‬ ‫مربوط‬17‫های‬ ‫بیت‬ ‫باید‬ ‫دهیم‬ ‫تغییر‬ ‫را‬ ‫یک‬ ‫پورت‬ ‫از‬2‫و‬3‫از‬PINMODE3‫را‬
. ‫دهیم‬ ‫تغییر‬
‫به‬ ‫که‬ ‫مقداری‬PINMODE‫نسبت‬ ‫پین‬ ‫هر‬‫می‬: ‫شود‬ ‫می‬ ‫مشخص‬ ‫زیر‬ ‫جدول‬ ‫اساس‬ ‫بر‬ ، ‫دهیم‬
‫مقاومت‬ ‫وضعیت‬‫به‬ ‫متصل‬‫پین‬‫مقدار‬PINMODE‫پین‬ ‫به‬ ‫مربوط‬
PullUp00
‫نامعتبر‬01
‫پین‬ ‫به‬ ‫مقاومت‬ ‫اتصال‬ ‫عدم‬(Open Collector)10
PullDown11
‫توجه‬‫رجیستر‬ ‫مقدار‬ :PINMODE‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫ها‬ ‫پین‬ ‫تمام‬ ‫پس‬ ، ‫است‬ ‫صفر‬ ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫نیز‬PullUp
‫پین‬ ‫مقدار‬ ، ‫نشود‬ ‫اعمال‬ ‫پین‬ ‫به‬ ‫ولتاژی‬ ‫و‬ ، ‫باشند‬ ‫ورودی‬ ‫عنوان‬ ‫به‬ ‫که‬ ‫حالتی‬ ‫در‬ ‫و‬ ‫هستند‬"1". ‫بود‬ ‫خواهد‬
31
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫پین‬ ‫بخواهیم‬ ‫اگر‬ ‫مثال‬ ‫بطور‬5‫پورت‬ ‫از‬0‫را‬Pull Down: ‫نمائیم‬
‫مقدار‬x‫برابر‬ ‫است‬ ‫پورت‬ ‫شماره‬ ‫نمودیم‬ ‫داد‬ ‫قرار‬ ‫که‬0: ‫است‬x=1
‫مقدار‬ ‫باید‬ ‫پس‬y‫(برای‬PINMODEy، )2x‫و‬2x+1، ‫یعنی‬ ، ‫باشد‬y‫باید‬2‫یا‬3. ‫باشد‬
‫چون‬، ‫کنیم‬ ‫می‬ ‫کار‬ ‫آن‬ ‫با‬ ‫که‬ ‫ای‬ ‫پین‬ ‫شماره‬5‫از‬ ‫و‬ ‫بوده‬16‫از‬ ‫باید‬ ‫است‬ ‫کمتر‬PINMODE2. ‫نمائیم‬ ‫استفاده‬
‫مساوی‬ ‫بزرگتر‬ ‫پین‬ ‫شماره‬ ‫اگر‬06‫از‬ ‫باید‬ ‫باشد‬y=2x+1‫شود‬ ‫می‬ ‫اینجا‬ ‫در‬ ‫که‬ ، ‫نمائیم‬ ‫استفاده‬PINMODE3.
‫های‬ ‫بیت‬ ‫شماره‬ ‫واما‬PINMODE2. ‫دهیم‬ ‫تغییر‬ ‫باید‬ ‫را‬ ‫بیت‬ ‫دو‬ ‫کدام‬ ‫که‬ ، ‫ماند‬ ‫می‬
‫پین‬ ‫شماره‬ ‫اگر‬‫مقدار‬ ‫را‬z‫مربوطه‬ ‫های‬ ‫بیت‬ ‫شماره‬ ، ‫بگیریم‬ ‫نظر‬ ‫در‬2(z%16)‫و‬2(z%16)+1. ‫بود‬ ‫خواهد‬
‫پین‬ ‫شماره‬ ‫اینجا‬ ‫در‬z=5‫های‬ ‫بیت‬ ‫باید‬ ‫پس‬ ، ‫بوده‬01‫و‬00‫از‬PINMODE2‫پین‬ ‫این‬ ‫خواهیم‬ ‫می‬ ‫چون‬ ، ‫بدهیم‬ ‫مقدار‬ ‫را‬
Pull Down‫مقدار‬ ‫بیت‬ ‫دو‬ ‫هر‬ ‫به‬ ‫باید‬ ، ‫شود‬0‫بنویسیم‬ ‫کدمان‬ ‫در‬ ‫باید‬ ‫پس‬ ، ‫دهیم‬ ‫نصب‬ ‫را‬:
PINMODE2 |= (1 << 10) | (1 << 11) ;
‫استفاده‬ ‫موارد‬:
‫باید‬ ‫ورودی‬ ‫داشتن‬ ‫جهت‬PINMODE‫نمود‬ ‫تنظیم‬ ‫را‬‫نوع‬ ‫و‬PINMODE‫به‬‫نوع‬‫ورودی‬‫دارد‬ ‫بستگی‬.
0.Pull Up)‫ولتاژ‬ ‫به‬ ‫اتصال‬ ‫با‬ ‫و‬ ، ‫باشد‬ ‫یک‬ ‫همیشه‬ ‫پین‬ ‫مقدار‬ ‫بخواهیم‬ ‫که‬ ‫زمانی‬"1"‫از‬ ، ‫بگیرد‬ ‫صفر‬ ‫مقدار‬PullUp
: ‫نمائیم‬ ‫می‬ ‫استفاده‬
( ‫صفر‬ ‫پورت‬ ‫از‬ ‫دو‬ ‫پین‬ ‫مقدار‬ ، ‫شود‬ ‫بسته‬ ‫سوئیچ‬ ‫وقتی‬ ، ‫زیر‬ ‫مدار‬ ‫در‬P0.2‫باید‬ ‫پین‬ ‫این‬ ‫پس‬ ، ‫شد‬ ‫خواهد‬ ‫صفر‬ ، )
(‫باشد‬ ‫داشته‬ ‫یک‬ ‫مقدار‬ ‫همیشه‬PullUp. ‫دهیم‬ ‫تشخیص‬ ‫را‬ ‫سوئیچ‬ ‫شدن‬ ‫بسته‬ ‫تا‬ ، )‫باشد‬
‫سوئیچ‬ ‫شدن‬ ‫بسته‬ ‫با‬ ، ‫باشد‬ ‫صفر‬ ‫همیشه‬ ‫پین‬ ‫مقدار‬ ‫اگر‬،‫مقدا‬ ‫باز‬‫را‬ ‫سوئیچ‬ ‫شدن‬ ‫بسته‬ ‫توان‬ ‫نمی‬ ‫و‬ ‫است‬ ‫صفر‬ ‫پین‬ ‫ر‬
. ‫دهیم‬ ‫تشخیص‬
31
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
2.PullDown‫ولتاژ‬ ‫به‬ ‫اتصال‬ ‫با‬ ‫و‬ ، ‫باشد‬ ‫صفر‬ ‫همیشه‬ ‫پین‬ ‫مقدار‬ ‫بخواهیم‬ ‫که‬ ‫زمانی‬ )"0"‫مقدار‬‫یک‬‫از‬ ، ‫بگیرد‬
PullDown: ‫نمائیم‬ ‫می‬ ‫استفاده‬
( ‫صفر‬ ‫پورت‬ ‫از‬ ‫دو‬ ‫پین‬ ‫مقدار‬ ، ‫شود‬ ‫بسته‬ ‫سوئیچ‬ ‫وقتی‬ ، ‫زیر‬ ‫مدار‬ ‫در‬P0.2، )‫یک‬‫باید‬ ‫پین‬ ‫این‬ ‫پس‬ ، ‫شد‬ ‫خواهد‬
‫مقدار‬ ‫همیشه‬‫صفر‬(‫باشد‬ ‫داشته‬PullDown. ‫دهیم‬ ‫تشخیص‬ ‫را‬ ‫سوئیچ‬ ‫شدن‬ ‫بسته‬ ‫تا‬ ، )‫باشد‬
‫همیشه‬ ‫پین‬ ‫مقدار‬ ‫اگر‬‫یک‬‫پین‬ ‫مقدار‬ ‫باز‬ ، ‫سوئیچ‬ ‫شدن‬ ‫بسته‬ ‫با‬ ، ‫باشد‬‫یک‬‫را‬ ‫سوئیچ‬ ‫شدن‬ ‫بسته‬ ‫توان‬ ‫نمی‬ ‫و‬ ‫است‬
. ‫دهیم‬ ‫تشخیص‬
3.Open Collector)‫حالت‬ ‫دو‬ ‫به‬PullUp‫و‬PullDown‫حالت‬ ‫در‬ ، ‫نمائید‬ ‫دقت‬PullUp‫مقدار‬ ‫با‬ ‫ورودی‬ ‫توان‬ ‫می‬
‫حالت‬ ‫در‬ ‫و‬ ، ‫داد‬ ‫تشخیص‬ ‫را‬ ‫صفر‬PullDown‫ی‬ ‫مقدار‬ ‫با‬ ‫ورودی‬. ‫داد‬ ‫تشخیص‬ ‫توان‬ ‫می‬ ‫را‬ ‫ک‬
‫از‬ ‫اگر‬ ، ‫نماید‬ ‫ارسال‬ ‫را‬ ‫یک‬ ‫یا‬ ‫و‬ ‫صفر‬ ‫تواند‬ ‫می‬ ‫میکرو‬ ‫هر‬ ، ‫نمائیم‬ ‫متصل‬ ‫یکدیگر‬ ‫به‬ ‫بخواهیم‬ ‫را‬ ‫میکرو‬ ‫دو‬ ‫کنید‬ ‫فرض‬
‫حا‬‫لت‬PullDown‫حالت‬ ‫از‬ ‫از‬ ‫اگر‬ ‫و‬ ‫صفرها‬ ، ‫نمائیم‬ ‫استفاده‬PullUp‫خواهند‬ ‫تشخیص‬ ‫غیرقابل‬ ‫ها‬ ‫یک‬ ‫نمائیم‬ ‫استفاده‬
‫پین‬ ‫که‬ ‫وقتی‬ ، ‫بود‬Open Collector‫(کلکتوربا‬‫توانند‬ ‫می‬ ‫میکروها‬ ، ‫باشد‬ )‫ز‬. ‫باشند‬ ‫ارتباط‬ ‫در‬ ‫بایکدیگر‬ ‫بدرستی‬
32
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫میکرو‬ ‫داخلی‬ ‫واحدهای‬ ‫با‬ ‫کار‬
‫میکرو‬ ‫داخلی‬ ‫واحدهای‬‫در‬‫دیاگرام‬ ‫بالک‬‫صفحه‬06‫واحد‬ ‫آن‬ ‫های‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫همراه‬ ‫به‬. ‫است‬ ‫مشاهده‬ ‫قابل‬ ،
‫برای‬‫ب‬ ‫واحد‬ ‫هر‬ ‫از‬ ‫استفاده‬‫عملکرد‬ ‫چه‬ ‫واحد‬ ‫آن‬ ‫که‬ ‫بدانیم‬ ‫اید‬‫واحد‬ ‫آن‬ ‫به‬ ‫رجیسترهایی‬ ‫چه‬ ‫و‬ ‫دارد‬ ‫هایی‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫چه‬ ‫و‬
‫شده‬ ‫داده‬ ‫اختصاص‬‫باید‬ ‫را‬ ‫واحد‬ ‫آن‬ ‫سازی‬ ‫فعال‬ ‫نحوه‬ ‫همچنین‬ ‫و‬ ‫است‬. ‫بدانیم‬
: ‫نیازمندیم‬ ‫زیر‬ ‫جدول‬ ‫در‬ ‫شده‬ ‫ذکر‬ ‫رجیسترهای‬ ‫همچنین‬ ‫و‬ ‫واحد‬ ‫آن‬ ‫مخصوص‬ ‫رجیسترهای‬ ‫به‬ ‫واحد‬ ‫هر‬ ‫کنترل‬ ‫برای‬
، ‫میکرو‬ ‫انداز‬ ‫راه‬ ‫کالک‬ ‫تنظیمات‬ ‫جهت‬ ‫رجیسترها‬ ‫این‬( ‫تغذیه‬ ‫تنظیمات‬ ‫و‬ ‫داخلی‬ ‫واحدهای‬ ‫کالک‬Power‫واحدهای‬ ‫و‬ ‫میکرو‬ )
‫به‬ ‫نیازی‬ ‫که‬ ، ‫باشند‬ ‫می‬ ... ‫و‬ ‫داخلی‬، ‫پروژه‬ ‫انجام‬ ‫برای‬ ‫نیاز‬ ‫صورت‬ ‫در‬ ‫و‬ ، ‫باشد‬ ‫نمی‬ ‫ها‬ ‫آزمایش‬ ‫انجام‬ ‫برای‬ ‫آنها‬ ‫دانستن‬
. ‫باشد‬ ‫می‬ ‫دانشجو‬ ‫خود‬ ‫عهده‬ ‫بر‬ ‫آن‬ ‫کامل‬ ‫یادگیری‬
33
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫میکرو‬ ‫های‬ ‫پایه‬ ‫نقش‬
، ‫میکرو‬ ‫های‬ ‫پایه‬ ‫از‬ ‫برخی‬‫پایه‬ ‫مثال‬ ، ‫بوده‬ ‫منظوره‬ ‫تک‬02‫عنوان‬ ‫به‬ ‫فقط‬ ‫میکرو‬VREF‫ها‬ ‫پایه‬ ‫از‬ ‫بسیاری‬ ‫ولی‬ ، ‫باشد‬ ‫می‬
‫چن‬ ‫به‬ ‫و‬ ، ‫بوده‬ ‫چندمنظوره‬‫پایه‬ ‫مثال‬ ، ‫بوده‬ ‫متصل‬ ‫میکرو‬ ‫داخلی‬ ‫واحد‬ ‫دین‬98‫عنوان‬ ‫به‬ ‫هم‬ ‫میکرو‬P0,2‫واحد‬ ‫به‬ ‫(مربوط‬
GPIO‫عنوان‬ ‫به‬ ‫هم‬ ‫و‬ )‫صفر‬ ‫پورت‬ ‫از‬ ‫دو‬ ‫پین‬ ،TXD0‫واحد‬ ‫فرستنده‬ ‫(پایه‬UART0)‫م‬‫باشد‬ ‫ی‬.
‫واحد‬ ‫به‬ ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫که‬ ‫را‬ ‫پین‬ ‫یک‬ ، ‫بخواهیم‬ ‫اینکه‬ ‫برای‬ ‫حال‬GPIO‫از‬ ‫نمائیم‬ ‫متصل‬ ‫دیگری‬ ‫واحد‬ ‫به‬ ، ‫بوده‬ ‫متصل‬
‫رجیستر‬PINSEL‫رجیستر‬ ‫همانند‬ ، ‫نمائیم‬ ‫می‬ ‫استفاده‬PINMODE‫از‬ ‫بیت‬ ‫دو‬ ‫پین‬ ‫هر‬ ‫به‬PINSEL‫است‬ ‫شده‬ ‫داده‬ ‫اختصاص‬
‫پورت‬ ‫برای‬ ‫و‬ ،x‫پین‬ ‫و‬z‫رجیستر‬ ‫از‬ ‫باید‬PINSEL(2x)‫یا‬PINSEL(2x+1)‫از‬ ‫کمتر‬ ‫پین‬ ‫شماره‬ ‫اگر‬ ، ‫نمائیم‬ ‫استفاده‬06
‫با‬‫از‬ ، ‫شد‬PINSEL(2x)‫اگربزرگترمساوی‬ ‫و‬06‫از‬ ‫باشد‬PINSEL(2x+1)‫های‬ ‫بیت‬ ‫از‬ ‫همچنین‬ ‫و‬ ‫نموده‬ ‫استفاده‬2(z%16)‫و‬
2(z%16)+1. ‫نموده‬ ‫استفاده‬
‫بخواهیم‬ ‫اگر‬ ‫مثال‬P0.2: ‫صفر‬ ‫(پورت‬x=0‫پین‬ ‫و‬2:z=2‫واحد‬ ‫به‬ ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫که‬ ، )GPIO‫واحد‬ ‫به‬ ، ‫بوده‬ ‫متصل‬
UART0‫های‬ ‫بیت‬ ‫مقدار‬ ‫باید‬ ‫کند‬ ‫ایفا‬ ‫را‬ ‫فرستنده‬ ‫پایه‬ ‫نقش‬ ، ‫شود‬ ‫متصل‬4‫و‬5‫از‬PINSEL0. ‫دهیم‬ ‫تغییر‬ ‫را‬
‫مقادیر‬ ‫ازای‬ ‫به‬ ‫اینکه‬00،01،10‫و‬11‫رجیستر‬ ‫از‬PINSEL‫بوده‬ ‫متصل‬ ‫واحد‬ ‫کدام‬ ‫به‬ ‫آن‬ ‫متناظر‬ ‫پایه‬ ، ‫پین‬ ‫یک‬ ‫به‬ ‫مربوط‬
‫بوده‬ ‫متفاومت‬ ‫پین‬ ‫هر‬ ‫برای‬ ، ‫کند‬ ‫می‬ ‫ایفا‬ ‫را‬ ‫نقشی‬ ‫چه‬ ‫و‬.
PINSEL0‫های‬ ‫پین‬ ، ‫صفر‬ ‫پورت‬ :0‫تا‬15:
34
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
PINSEL1‫های‬ ‫پین‬ ، ‫صفر‬ ‫پورت‬ :16‫تا‬31:
PINSEL2‫پورت‬ :1‫های‬ ‫پین‬ ،0‫تا‬15:
35
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
PINSEL3‫پورت‬ :1‫های‬ ‫پین‬ ،16‫تا‬31:
PINSEL4‫پورت‬ :2‫های‬ ‫پین‬ ،0‫تا‬15:
36
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
PINSEL5‫پورت‬ :2‫های‬ ‫پین‬ ،16‫تا‬31:‫مربوطه‬ ‫های‬ ‫پین‬ : ‫دسترس‬ ‫غیرقابل‬‫نیز‬‫بوده‬ ‫دسترس‬ ‫غیرقابل‬
PINSEL6‫پورت‬ :3‫های‬ ‫پین‬ ،0‫تا‬15‫بوده‬ ‫دسترس‬ ‫غیرقابل‬ ‫نیز‬ ‫مربوطه‬ ‫های‬ ‫پین‬ : ‫دسترس‬ ‫غیرقابل‬ :
PINSEL7‫پورت‬ :3‫های‬ ‫پین‬ ،16‫تا‬31‫های‬ ‫پین‬ ‫فقط‬ :25‫و‬26: ‫بوده‬ ‫استفاده‬ ‫قابل‬
PINSEL8‫پورت‬ :4‫های‬ ‫پین‬ ،0‫تا‬15‫بوده‬ ‫دسترس‬ ‫غیرقابل‬ ‫نیز‬ ‫مربوطه‬ ‫های‬ ‫پین‬ : ‫دسترس‬ ‫غیرقابل‬ :
PINSEL9‫پورت‬ :4‫های‬ ‫پین‬ ،16‫تا‬31‫بوده‬ ‫دسترس‬ ‫غیرقابل‬ ‫نیز‬ ‫مربوطه‬ ‫های‬ ‫پین‬ : ‫دسترس‬ ‫غیرقابل‬ :
PINSEL10:
‫رجی‬ ‫این‬ ‫از‬ ‫سوم‬ ‫بیت‬ ‫فقط‬‫واسط‬ ‫کنترل‬ ‫برای‬ ‫و‬ ‫دسترس‬ ‫در‬ ‫ستر‬ETM. ‫گیرد‬ ‫می‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫ها‬ ‫پین‬
ETM : EmbeddedTrace Module
‫واسط‬ ‫از‬ETM‫هسته‬ ‫با‬ ‫مستقیم‬ ‫ارتباط‬ ‫برای‬ARM. ‫شود‬ ‫می‬ ‫استفاده‬
‫طریق‬ ‫از‬ ، ‫ها‬ ‫روش‬ ‫سایر‬ ‫در‬BUS‫به‬ ‫ها‬ARM‫هسته‬ ‫به‬ ‫مستقیم‬ ‫دسترسی‬ ‫نه‬ ‫و‬ ‫داریم‬ ‫دسترسی‬ARM.
37
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫واحد‬ ‫اندازی‬ ‫راه‬DAC
DAC‫یا‬Digital-to Analog Converter‫دی‬ ‫تبدیل‬ ‫برای‬‫زیر‬ ‫های‬ ‫ویژگی‬ ‫دارای‬ ‫و‬ ‫شود‬ ‫می‬ ‫استفاده‬ ‫آنالوگ‬ ‫به‬ ‫جیتال‬
‫است‬:
0.‫مبدل‬01‫دقت‬ ‫حداکثر‬ : ‫آنالوگ‬ ‫به‬ ‫دیجیتال‬ ، ‫بیت‬01‫است‬ ‫بیت‬
2.‫مقاومتی‬ ‫رشته‬ ‫معماری‬ ‫دارای‬
3.‫توان‬ ‫کاهش‬ ‫حالت‬ ‫دارای‬
4.‫تغذیه‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫سرعت‬ ‫کنترل‬ ‫و‬ ‫تنظیم‬
‫به‬ ، ‫خواهیم‬ ‫می‬ ‫واقع‬ ‫در‬‫مخت‬ ‫ولتاژهای‬ ، ‫میکرو‬ ‫از‬ ‫ای‬ ‫پایه‬‫واحد‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ ، ‫نمائیم‬ ‫اعمال‬ ‫را‬ ‫لفی‬GPIO
‫مقدار‬ ‫ولی‬ ، ‫داد‬ ‫مقدار‬ ‫ها‬ ‫پایه‬ ‫به‬ ‫شود‬ ‫می‬ ‫هم‬‫منطقی‬ ‫یک‬ ‫و‬ ‫صفر‬ ‫به‬ ‫محدود‬ ‫آن‬‫باشد‬ ‫می‬.
‫واحد‬ ‫عملکرد‬ ، ‫زیر‬ ‫جدول‬ ‫در‬DAC: ‫است‬ ‫مشاهده‬ ‫قابل‬
AOUT‫واحد‬ ‫خروجی‬ :DAC‫شماره‬ ‫پایه‬ ‫که‬ ‫بوده‬6‫و‬ ‫میکرو‬ ‫از‬P0.26. ‫باشد‬ ‫می‬
‫واحد‬ ‫خروجی‬ ‫اینکه‬ ‫برای‬DAC‫پایه‬ ‫روی‬ ‫را‬6‫به‬ ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫که‬ ‫را‬ ‫پایه‬ ‫این‬ ‫باید‬ ، ‫باشیم‬ ‫داشته‬ ‫میکرو‬GPIO‫متصل‬
‫پین‬ ( ‫بوده‬26‫واحد‬ ‫به‬ ‫را‬ ) ‫صفر‬ ‫پورت‬ ‫از‬DAC‫های‬ ‫بیت‬ ‫باید‬ ‫پس‬ ، ‫نمائیم‬ ‫متصل‬21‫و‬20‫از‬PINSEL1‫تغییر‬ ‫را‬‫بر‬ ‫و‬ ‫دهیم‬
‫صفحه‬ ‫جدول‬ ‫اساس‬34‫ها‬ ‫بیت‬ ‫این‬ ‫مقدار‬ ‫باید‬“10”: ‫نویسیم‬ ‫می‬ ‫کدمان‬ ‫داخل‬ ‫پس‬ ، ‫شود‬
PINSEL1 |= (1 << 21) ; // 0x200000
: ‫با‬ ‫است‬ ‫برابر‬ ‫خروجی‬ ‫ولتاز‬ ‫مقدار‬
AOUT = ‫خروجی‬ =
Value
1024
∗ Vref
VREF‫پایه‬ ‫و‬ ‫دارد‬ ‫خروجی‬ ‫مقدار‬ ‫در‬ ‫تاثیر‬ ‫که‬ ، ‫واحد‬ ‫مرجع‬ ‫ولتاژ‬ :12‫دیگری‬ ‫نقش‬ ‫پایه‬ ‫این‬ ‫چون‬ ‫و‬ ‫بوده‬ ‫میکرو‬
‫تغییر‬ ‫به‬ ‫نیاز‬ ، ‫کند‬ ‫نمی‬ ‫ایفا‬ ‫را‬PINSEL‫و‬ ‫ندارد‬PINSEL. ‫ندارد‬ ‫کاربردی‬ ‫آن‬ ‫برای‬
DDAV‫ولتاژ‬ :3.3. ‫شود‬ ‫می‬ ‫استفاده‬ ‫واحد‬ ‫این‬ ‫تغذیه‬ ‫برای‬ ‫که‬
38
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
SSAV:. ‫واحد‬ ‫این‬ ‫گراند‬ ‫عنوان‬ ‫به‬
DDAV‫و‬SSAV. ‫باشند‬ ‫داشته‬ ‫را‬ ‫خطا‬ ‫و‬ ‫نویز‬ ‫حداقل‬ ‫باید‬ ، ‫شود‬ ‫می‬ ‫استفاده‬ ‫واحد‬ ‫این‬ ‫تغذیه‬ ‫برای‬ ‫که‬
. ‫بوده‬ ‫نویز‬ ‫رساندن‬ ‫حداقل‬ ‫به‬ ‫برای‬ ، ‫پروگرامر‬ ‫مدار‬ ‫در‬ ‫خازن‬ ‫از‬ ‫استفاده‬ ‫دالیل‬ ‫از‬ ‫یکی‬
‫رجیستر‬DACR:
‫واحد‬ ‫کنترل‬ ‫جهت‬ ‫رجیستر‬ ‫این‬DAC. ‫باشد‬ ‫می‬
‫های‬ ‫بیت‬6‫تا‬05‫که‬ ‫رجیستر‬ ‫این‬01‫همان‬ ، ‫بوده‬Value‫مقدار‬ ، ‫بخواهیم‬ ‫اگر‬ ‫مثال‬ ، ‫دارد‬ ‫تاثیر‬ ‫خروجی‬ ‫میزان‬ ‫در‬ ‫که‬ ‫است‬
Value‫برابر‬500: ‫نویسیم‬ ‫می‬ ‫باشد‬
DACR = 500 << 6 ;
‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬Value‫باید‬10‫بین‬ ‫مقدارش‬ ‫عبارتی‬ ‫به‬ ‫یا‬ ‫و‬ ، ‫بیتی‬0‫تا‬1023. ‫باشد‬
‫بیت‬16‫ام‬‫رجیستر‬ ،DACR. ‫باشد‬ ‫می‬ ‫خروجی‬ ‫جریان‬ ‫حداکثر‬ ‫و‬ ‫واحد‬ ‫سرعت‬ ‫حداکثر‬ ‫تنظیم‬ ‫جهت‬
: ‫کد‬ ‫نمونه‬
#include "LPC23xx.h"
#include "delay.h"
int main (void)
{
unsigned long value = 0;
PINSEL1 = 0x200000;/* set p0.26 to DAC output */
while ( 1 )
{
for(value = 500 ; value < 1024 ; value++)
{
DACR = (value << 6);
delay_ms(20);
}
}
}
39
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫واحد‬ADC
‫واحد‬ ‫از‬ADC‫اس‬ ‫دیجیتال‬ ‫به‬ ‫آنالوگ‬ ‫تبدیل‬ ‫جهت‬: ‫است‬ ‫زیر‬ ‫های‬ ‫ویژگی‬ ‫دارای‬ ‫و‬ ، ‫شود‬ ‫می‬ ‫تفاده‬
0.‫معادل‬ ‫تبدیل‬ ‫دقت‬01‫بیت‬
2.‫روی‬ ‫شده‬ ‫پلکس‬ ‫مالتی‬ ‫ورودی‬6‫پین‬
3.‫توان‬ ‫کاهش‬ ‫حالت‬ ‫دارای‬
4.‫تا‬ ‫صفر‬ ‫بین‬ ‫گیری‬ ‫اندازه‬ ‫محدوده‬3v
5.‫تبدیل‬ ‫زمان‬ ‫حداقل‬01‫بیت‬2.44 us‫بوده‬
‫واحد‬ ‫وسیله‬ ‫به‬DAC‫می‬ )‫مشخص‬ ‫(ولتاژی‬ ‫آنالوگ‬ ‫مقداری‬ ‫پایه‬ ‫یک‬ ‫به‬‫واحد‬ ‫توسط‬ ‫و‬ ، ‫دادیم‬ADC‫یک‬ ‫توانیم‬ ‫می‬‫ورودی‬
‫ولتاژ‬ ‫(سطح‬ ‫آنالوگ‬‫مشخص‬ ‫ی‬. ‫بخوانیم‬ ‫را‬ )
: ‫ها‬ ‫پین‬
‫در‬Lpc 2368‫داری‬ ‫که‬6‫کانال‬ADC‫واحد‬ ‫های‬ ‫ورودی‬ ‫زیر‬ ‫های‬ ‫پین‬ ، ‫است‬ADC: ‫هستند‬
‫مقدار‬PINSEL‫رجیستر‬PINSEL‫مربوطه‬‫پورت‬ ‫و‬ ‫پین‬‫پایه‬ ‫شماره‬‫پین‬ ‫عنوان‬‫واحد‬ ‫ورودی‬ADC
01PINSEL1[15:14]P0.239AD00ADC 0
01PINSEL1[17:16]P0.248AD01ADC 1
01PINSEL1[19:18]P0.257AD02ADC 2
01PINSEL1[21:20]P0.266AD03ADC 3
11PINSEL3[29:28]P1.3021AD04ADC 4
11PINSEL3[31:30]P1.3120AD05ADC 5
VREF‫پایه‬ ‫همان‬ ‫که‬ ،02‫تغییر‬ ‫به‬ ‫نیازی‬ ‫و‬ ، ‫بوده‬ ‫مرجع‬ ‫ولتاژ‬ ‫عنوان‬ ‫به‬ ، ‫است‬ ‫میکرو‬PINSEL‫منظوره‬ ‫تک‬ ‫ای‬ ‫(پایه‬ ‫ندارد‬ ‫هم‬
) ‫است‬
41
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
DDAV‫و‬SSAV‫واحد‬ ‫تغذیه‬ ‫عنوان‬ ‫به‬ADC. ‫است‬
‫رجیسترها‬:
41
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫رجیستر‬AD0CR:
‫کانال‬ ‫انتخاب‬ ‫برای‬ ‫رجیستر‬ ‫این‬ADC‫خود‬ ‫برنامه‬ ‫ابتدای‬ ‫در‬ ‫باید‬ ‫و‬ ، ‫است‬ ‫واحد‬ ‫این‬ ‫مدکاری‬ ‫و‬‫واحد‬ ‫از‬ ‫استفاده‬ ‫از‬ ‫(قبل‬ADC)
‫پی‬ ‫را‬ ‫رجیستر‬ ‫این‬‫نمو‬ ‫کربندی‬: ‫د‬
42
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫رجیستر‬AD0GDR:
‫به‬ ‫آنالوگ‬ ‫مقدار‬ ‫اینکه‬ ‫از‬ ‫پس‬‫در‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫سپس‬ ‫و‬ ‫رجیستر‬ ‫این‬ ‫در‬ )‫(نتیجه‬ ‫دیجیتال‬ ‫مقدار‬ ، ‫شد‬ ‫تبدیل‬ ‫دیجیتال‬
. ‫گردد‬ ‫می‬ ‫ذخیره‬ ‫شده‬ ‫تنظیم‬ ‫کانال‬ ‫با‬ ‫متناظر‬ ‫رجیستر‬
‫رجیستر‬AD0STAT:
‫های‬ ‫کانال‬ ‫تمام‬ ‫وضعیت‬ ‫بررسی‬ ‫امکان‬ ‫و‬ ‫اجازه‬ ‫رجیستر‬ ‫این‬ADC. ‫دهد‬ ‫می‬ ‫ما‬ ‫به‬ ‫را‬
‫وضعیت‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫بیت‬ ‫رجیستر‬ ‫این‬ ‫در‬DONE‫و‬OVERRUN‫واحد‬ ‫وقفه‬ ‫پرچم‬ ‫به‬ ‫مربوط‬ ‫بیت‬ ‫همچنین‬ ‫و‬ ‫کانال‬ ‫هر‬
ADC‫که‬OR‫بیت‬ ،DONE‫تما‬. ‫دارد‬ ‫وجود‬ ، ‫باشد‬ ‫می‬ ‫ها‬ ‫کانال‬ ‫م‬
43
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫رجیستر‬AD0INTEN:
‫این‬‫های‬ ‫کانال‬ ‫وقفه‬ ‫کنترل‬ ‫اجازه‬ ‫ما‬ ‫به‬ ‫رجیستر‬ADC‫یک‬ ‫کانال‬ ‫هر‬ ‫دیجیتال‬ ‫به‬ ‫آنالوگ‬ ‫تبدیل‬ ‫اتمام‬ ‫از‬ ‫پس‬ ‫تا‬ ، ‫دهد‬ ‫می‬ ‫را‬
. ‫دهد‬ ‫رخ‬ ‫وقفه‬
‫رجیستر‬‫های‬AD0DR(0:5):
‫کانال‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫رجیستر‬ ‫این‬ ‫از‬ ‫کدام‬ ‫هر‬ADC(0:5): ‫بوده‬
44
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
: ‫کد‬ ‫نمونه‬)‫نمائید‬ ‫بررسی‬ ‫را‬ ‫(کد‬
#include "LPC23xx.h"
#define led1 0x1
#define set_led1 (FIO0SET=led1)
#define clr_led1 (FIO0CLR=led1)
void ADC0Handler (void) __irq
{
unsigned long stat_backup;
unsigned long value;
stat_backup = AD0STAT & 0x000000FF;
if (stat_backup==1){ //channel 0 is ready
value = ( AD0DR0 >> 6 ) & 0x3FF; //you code is here for save converted data
if (value>500)
set_led1;
else
clr_led1;
}
AD0STAT=0;
AD0GDR=0;
VICVectAddr = 0;
AD0CR|=0x00200301;
AD0CR|=0x01000000;
}
int main(void){
SCS |=0x00000001;
FIO0MASK=0x00000000;
FIO0DIR=led1;
FIO0CLR=led1;
PINMODE0 = (1 << 2) | (1 << 3);
PINSEL1|=0x4000;
AD0CR=0x00200301;
AD0CR|=0x01000000;
VICIntSelect=0x00000000;
VICIntEnable=(1<<18); //set ADC0 to IRQ
VICVectAddr18=(unsigned long)ADC0Handler;
AD0INTEN=257;
clr_led1;
while(1);
}
45
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫واحد‬UART (0,2,3)
‫واحد‬ ‫از‬UART، ‫نمائیم‬ ‫می‬ ‫استفاده‬ ‫سریال‬ ‫ارتباط‬ ‫جهت‬‫توان‬ ‫می‬ ‫واحد‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫با‬‫میکر‬ ‫یک‬ ‫به‬ ‫را‬ ‫میکرو‬‫ی‬ ‫و‬ ‫دیگر‬ ‫و‬‫ا‬
: ‫است‬ ‫زیر‬ ‫های‬ ‫ویژگی‬ ‫دارای‬ ‫که‬ ، ‫نمود‬ ‫متصل‬ ‫کامپیوتر‬
0.06‫رجیستر‬ ‫بایت‬FIFO(Firt in First Out)‫دریافت‬ ‫و‬ ‫ارسال‬ ‫برای‬
2.‫خودکار‬ ‫تنظیم‬ ‫قابلیت‬Baud) ‫داده‬ ‫انتقال‬ ‫نرخ‬ (
3.UART3‫مد‬ ‫از‬ ‫پشتیبانی‬ ‫امکان‬IrDA‫است‬ ‫قرمز‬ ‫مادون‬ ‫ارتباط‬ ‫برای‬
: ‫ها‬ ‫پین‬
‫مقدار‬PINSEL‫رجیستر‬PINSEL‫مربوطه‬‫پورت‬ ‫و‬ ‫پین‬‫پایه‬
01PINSEL0[7:6]P0.399RXD0
‫گیرنده‬
UART0
01PINSEL0[5:4]P0.298TXD0
‫فرستنده‬
01PINSEL0[23:22]P0.1149RXD2
‫گیرنده‬
UART2
01PINSEL0[21:20]P0.1048TXD2
‫فرستنده‬
10PINSEL0[3:2]P0.147RXD3
‫گیرنده‬
UART3
10PINSEL0[1:0]P0.046TXD3
‫فرستنده‬
46
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
: ‫ها‬ ‫رجیستر‬
47
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫رجیستر‬‫های‬U(0,2,3)RBR:
‫رجیستر‬‫های‬U(0,2,3)THR:
‫رجیستر‬‫های‬U(0,2,3)DLL‫و‬U(0,2,3)DLM:
‫رجیستر‬‫های‬U(0,2,3)IER:
48
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫رجیستر‬‫های‬U(0,2,3)IIR:
49
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
UARTn Interupt Handling:
51
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫رجیستر‬‫های‬U(0,2,3)FCR:
‫رجیستر‬‫های‬U(0,2,3)LCR:
51
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫رجیستر‬‫های‬U(0,2,3)LSR:
52
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
53
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫رجیستر‬‫های‬U(0,2,3)SCR:
‫رجیستر‬‫های‬U(0,2,3)ACR:
54
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫رجیستر‬U3ICR:
IrDA Pulse Width:
‫رجیستر‬‫های‬U(0,2,3)FDR:
55
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
Fractional Divider setting look-up table:
‫رجیستر‬‫های‬U(0,2,3)TER:
56
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫با‬ ( : ‫نمونه‬ ‫کد‬BaudRate،19200)
#include "LPC23xx.h"
#include "string.h"
#define RDR 1
#define OE 2
#define PE 4
#define FE 8
#define BRI 16
#define THRE 32
#define TEMT 64
#define RXFE 128
void sendline (unsigned char *BufferPtr, unsigned long length);
void getline (unsigned char *BufferPtr, unsigned long length, unsigned char sens_word);
unsigned char getchar (void);
void putchar (unsigned char cin);
int main (){
char *strin="In The Name Of Allah";
char *strin1;
PINSEL0=0x50; //set p0.2 and p0.3 to TXD0 and RXD0
U0LCR=0x83; //set frmae=8n1 and DLAB=1
U0DLL=0x34; //baud rate=19200bps @12MHz crystal, 32MHz cclk,16MHz Pclk
U0DLM=0x0; //baud rate=19200bps @12MHz crystal, 32MHz cclk,16MHz Pclk
U0LCR=0x03; //DLAB=1
U0FCR=0x07; // enable RX fifo and TX fifo
sendline((unsigned char *)strin,strlen((const char *)strin));
while(1){
strin="type your text:";
sendline ((unsigned char *)strin,strlen((const char *)strin));
getline((unsigned char *)strin1,0x00000032,0x0D);
strin="your text is:";
sendline((unsigned char *)strin,strlen((const char *)strin));
sendline((unsigned char *)strin1,strlen((const char *)strin1));
}
}
57
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
void sendline (unsigned char *BufferPtr, unsigned long length){
unsigned long len;
for (len=0;len<length;len++){
putchar(*BufferPtr);
BufferPtr++;
}
putchar(0x0D);
putchar(0x0A);
}
void getline (unsigned char *BufferPtr, unsigned long length, unsigned char sens_word){
unsigned long len;
unsigned char in;
for (len=0;len<length;len++){
in=getchar();
if (in==sens_word) {
*BufferPtr=0x0;
break;}
*BufferPtr=in;
BufferPtr++;
}
}
unsigned char getchar (void){
while(!(U0LSR & RDR));
return (U0RBR);
}
void putchar (unsigned char cin){
while(!(U0LSR & THRE));
U0THR=cin;
}
58
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
‫میکرو‬ ‫با‬ ‫سریال‬ ‫ارتباط‬ ‫برای‬ ‫شارپ‬ ‫سی‬ ‫در‬ ‫سریال‬ ‫پورت‬
‫برنامه‬ ‫که‬ ‫است‬ ‫کافی‬ ‫سریال‬ ‫پورت‬ ‫طریق‬ ‫از‬ ‫کامپیوتر‬ ‫و‬ ‫میکرو‬ ‫ارتباط‬ ‫جهت‬UART 0‫سپس‬ ‫و‬ ‫نمائید‬ ‫پروگرام‬ ‫میکرو‬ ‫روی‬ ‫را‬
‫پایه‬ ( ‫نمائید‬ ‫خارج‬ ‫پروگرام‬ ‫حالت‬ ‫از‬ ‫را‬ ‫میکرو‬53‫قطع‬ ‫را‬ ‫اتصال‬ ‫این‬ ، ‫باشد‬ ‫متصل‬ ‫زمین‬ ‫به‬ ‫باید‬ ‫کردن‬ ‫پروگرام‬ ‫هنگام‬ ‫به‬ ‫که‬
‫نمائید‬‫اتصال‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ ‫؛‬‫های‬ ‫پایه‬RST،Rx‫و‬Tx‫و‬ ‫میکرو‬ ‫بین‬Mini Lpc Programmer) ‫شود‬ ‫قطع‬ ‫نباید‬
. ‫نماید‬ ‫ارسال‬ ‫و‬ ‫دریافت‬ ‫را‬ ‫اطالعات‬ ‫بتواند‬ ‫تا‬ ‫داریم‬ ‫نیاز‬ ‫کامپیوتر‬ ‫روی‬ ‫برنامه‬ ‫یک‬ ‫به‬ ‫حال‬
‫پوشه‬ ‫داخل‬SerialPort. ‫دارد‬ ‫وجود‬ ‫سریال‬ ‫ارتباط‬ ‫جهت‬ ‫شارپ‬ ‫سی‬ ‫پروژه‬
‫را‬ ‫پروژه‬ ‫ابتدا‬‫توسط‬Visual Studio‫گزینه‬ ‫روی‬ ‫سپس‬ ‫و‬ ‫نمائید‬ ‫باز‬‫داخل‬ ‫از‬Solution Explorer
‫گزینه‬ ‫سپس‬ ‫و‬ ‫کلیک‬ ‫راست‬‫باز‬ ‫را‬ ‫فرم‬ ‫که‬ ‫است‬ ‫این‬ ‫دیگر‬ ‫راه‬ ، ‫نمائید‬ ‫انتخاب‬ ‫را‬
‫یا‬ ‫و‬ ‫نموده‬ ‫انتخاب‬ ‫را‬ ‫گزینه‬ ‫همین‬ ‫سپس‬ ‫و‬ ‫کلیک‬ ‫راست‬ ‫سپس‬ ‫و‬ ‫نموده‬F7. ‫دهید‬ ‫فشار‬ ‫را‬
: ‫بوده‬ ‫مشاهده‬ ‫قابل‬ ‫زیر‬ ‫متد‬ ‫دو‬
public void WritedE(object sender , EventArgs e)
{
PortEventArgs er =(PortEventArgs)e;
MessageBox.Show(er.Msg);
}
public void ReadE(object sender, EventArgs e)
{
PortEventArgs er = (PortEventArgs)e;
MessageBox.Show(er.Msg);
}
‫متد‬ ‫شود‬ ‫ارسال‬ ‫برنامه‬ ‫در‬ ‫سریال‬ ‫پورت‬ ‫طریق‬ ‫از‬ ‫اطالعاتی‬ ‫که‬ ‫زمانی‬WritedE‫از‬ ‫را‬ ‫اطالعاتی‬ ‫برنامه‬ ‫زمانی‬ ‫همچنین‬ ‫و‬ ‫شده‬ ‫اجرا‬
‫متد‬ ‫نماید‬ ‫دریافت‬ ‫پورت‬ ‫طریق‬ReadE. ‫شود‬ ‫می‬ ‫اجرا‬
‫متد‬ ‫دو‬ ‫هر‬ ‫داخل‬er.Msg، ‫باشد‬ ‫داشته‬ ‫درستی‬ ‫آن‬ ‫به‬ ‫راحتی‬ ‫به‬ ‫توانید‬ ‫می‬ ‫که‬ ، ‫است‬ ‫شده‬ ‫دریافت‬ ‫یا‬ ‫ارسال‬ ‫اطالعات‬ ‫حاوی‬
‫توانید‬ ‫می‬ ‫خود‬ ‫پروژه‬ ‫در‬ ‫نیاز‬ ‫صورت‬ ‫در‬ ‫حال‬er.Msg. ‫شود‬ ‫انجام‬ ‫نظرتان‬ ‫مورد‬ ‫عملیات‬ ‫تا‬ ‫نموده‬ ‫بررسی‬ ‫یا‬ ‫و‬ ‫پردازش‬ ‫را‬
‫کام‬ ‫روی‬ ‫که‬ ‫پورتی‬ ‫باید‬ ‫برنامه‬ ‫اجرای‬ ‫از‬ ‫بعد‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬‫به‬ ‫پیوتر‬Mini Lpc Prog‫را‬ ‫است‬ ‫شده‬ ‫داده‬ ‫اختصاص‬
‫و‬ ‫انتخاب‬Baud Rate‫میکند‬ ‫کار‬ ‫آن‬ ‫با‬ ‫میکرو‬ ‫که‬ ‫مقداری‬ ‫را‬‫برنامه‬ ‫اساس‬ ‫(بر‬UART)‫سپس‬ ‫و‬ ‫دهید‬ ‫قرار‬Port‫را‬Open
. ‫نمائید‬
59
amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
LCD‫گرافیکی‬
‫برای‬‫اندازی‬ ‫راه‬ ‫و‬ ‫تغذیه‬LCD‫های‬ ‫پایه‬ ‫باید‬ ، ‫گرافیکی‬Vdd‫و‬LEDA‫به‬ ‫مربوط‬ ،LCD‫به‬ ‫را‬‫ولتاژ‬3.3‫پایه‬ ‫و‬ ، ‫ولت‬Gnd‫را‬
‫به‬‫(پایه‬ . ‫نمود‬ ‫وصل‬ ‫گراند‬LEDA‫صفحه‬ ‫نور‬ ‫شدن‬ ‫روشن‬ ‫جهت‬LCD)‫باشد‬ ‫می‬
LCD‫دارای‬ ‫گرافیکی‬06‫(معادل‬ ‫بیت‬06)‫پایه‬‫داده‬ ‫خط‬‫و‬5‫(معادل‬ ‫بیت‬5)‫پایه‬‫باشد‬ ‫می‬ ‫کنترلی‬ ‫خط‬‫میکرو‬ ‫به‬ ‫باید‬ ‫که‬
. ‫شوند‬ ‫متصل‬
‫برای‬ ‫ها‬ ‫پایه‬ ‫ترین‬ ‫مناسب‬06، ‫دیتا‬ ‫خطوط‬ ‫بیت‬‫با‬ ‫متناظر‬ ‫های‬ ‫پایه‬‫های‬ ‫پین‬06‫تا‬30‫در‬ ‫همگی‬ ‫که‬ ‫باشند‬ ‫می‬ ‫یک‬ ‫پورت‬ ‫از‬
. ‫هستند‬ ‫دسترس‬
‫قرار‬ ‫اختیارتان‬ ‫در‬ ‫که‬ ‫(کدی‬‫به‬ ‫دیتا‬ ‫خط‬ ‫برای‬ ، ‫است‬ ‫شده‬ ‫داده‬06‫میکرو‬ ‫در‬ ‫که‬ ‫داریم‬ ‫نیاز‬ ‫سرهم‬ ‫پشت‬ ‫پین‬Lpc 2368‫مناسب‬
‫های‬ ‫پین‬ ، ‫ها‬ ‫پین‬ ‫ترین‬06‫تا‬30‫مد‬ ‫تغییر‬ ‫با‬ ‫توان‬ ‫می‬ ‫ولی‬ ، ‫هستند‬ ‫دسترس‬ ‫در‬ ‫که‬ ‫بوده‬ ‫یک‬ ‫پورت‬LCD‫از‬ ، ‫کدها‬ ‫تغییر‬ ‫و‬
‫جای‬ ‫به‬ ‫یا‬ ‫و‬ ‫سرهم‬ ‫پشت‬ ‫غیر‬ ‫های‬ ‫پین‬06‫از‬ ‫بیت‬8)‫نمود‬ ‫استفاده‬ ‫دیتا‬ ‫خط‬ ‫بیت‬
‫فایل‬ ‫در‬tftlcd_functions.h‫به‬‫خطوط‬31‫و‬30: ‫نمائید‬ ‫توجه‬
#define TFTLCD_DATAPORT_1
#define TFTLCD_DATAPORT_OFFSET 16
TFTLCD_DATAPORT_1،. ‫است‬ ‫شده‬ ‫متصل‬ ‫یک‬ ‫پورت‬ ‫به‬ ‫دیتا‬ ‫خط‬ ‫که‬ ‫معناست‬ ‫بدان‬
TFTLCD_DATAPORT_OFFSET 16‫پین‬ ‫از‬ ‫دیتا‬ ‫خطوط‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫پین‬ ‫که‬ ‫معناست‬ ‫بدان‬ ،06. ‫شوند‬ ‫می‬ ‫شروع‬
‫برای‬5‫با‬ ‫متناسب‬ ‫توان‬ ‫می‬ ‫کنترلی‬ ‫بیت‬‫گرفت‬ ‫نظر‬ ‫در‬ ‫بیت‬ ‫هر‬ ‫برای‬ ‫را‬ ‫دلخواهی‬ ‫های‬ ‫پایه‬ ، ‫میکرو‬ ‫به‬ ‫متصل‬ ‫قطعات‬ ‫سایر‬ ‫و‬ ‫مدار‬
. ‫باشند‬ ‫یکسانی‬ ‫پورت‬ ‫از‬ ‫باید‬ ‫متناظرشان‬ ‫پین‬ ، ‫ها‬ ‫پایه‬ ‫تمامی‬ ‫البته‬ ،)‫برد‬ ‫بین‬ ‫از‬ ‫را‬ ‫وابستگی‬ ‫این‬ ‫کدها‬ ‫تغییر‬ ‫با‬ ‫توان‬ ‫می‬ (
‫فایل‬ ‫در‬tftlcd_functions.h‫خطوط‬ ‫به‬33‫تا‬38: ‫نمائید‬ ‫توجه‬
#define TFTLCD_CONTROLPORT_1
#define TFTLCD_CS 0
#define TFTLCD_RS 1
#define TFTLCD_WR 4
#define TFTLCD_RD 8
#define TFTLCD_RST 9
‫های‬ ‫پایه‬ ‫از‬ ‫کدام‬ ‫هر‬ ‫و‬ ‫بشود‬ ‫باید‬ ‫متصل‬ ‫یک‬ ‫پورت‬ ‫به‬ ‫کنترلی‬ ‫خط‬ ، ‫کدها‬ ‫به‬ ‫باتوجه‬Cs،Rs،WR،RD،RST‫ترتیب‬ ‫به‬
‫های‬ ‫پین‬ ‫به‬1،0،4،8‫و‬9. ‫اند‬ ‫متصل‬
Az Micro
Az Micro
Az Micro
Az Micro

More Related Content

Similar to Az Micro

سوالات کاربر تولید محتوا از فصل 4 تا 7
سوالات کاربر تولید محتوا از فصل 4  تا 7سوالات کاربر تولید محتوا از فصل 4  تا 7
سوالات کاربر تولید محتوا از فصل 4 تا 7nazaninjam
 
بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )
بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )
بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )tahereh sharafi
 
آزمون تولیدمحتوا
آزمون تولیدمحتواآزمون تولیدمحتوا
آزمون تولیدمحتواf kh
 
برنامه سازی3
برنامه سازی3برنامه سازی3
برنامه سازی3mahdiehsalari
 
سیستم تئوری
سیستم تئوریسیستم تئوری
سیستم تئوریkimia2015
 
Kunagi سیستم مدیریت پروژه آنلاین
Kunagi  سیستم مدیریت پروژه آنلاینKunagi  سیستم مدیریت پروژه آنلاین
Kunagi سیستم مدیریت پروژه آنلاینAmir Reza Asadi
 
Mohamady zahedy c#
Mohamady zahedy c#Mohamady zahedy c#
Mohamady zahedy c#danesh_fd
 
Install windows server 2012 r2 in persian
Install windows server 2012 r2 in persianInstall windows server 2012 r2 in persian
Install windows server 2012 r2 in persianmohsen karzari
 
سیستم عامل جلد دوم
سیستم عامل جلد دومسیستم عامل جلد دوم
سیستم عامل جلد دومsomyashabani
 
How to program with c in persian
How to program with c in persianHow to program with c in persian
How to program with c in persianmoein jazemi
 

Similar to Az Micro (20)

سوالات کاربر تولید محتوا از فصل 4 تا 7
سوالات کاربر تولید محتوا از فصل 4  تا 7سوالات کاربر تولید محتوا از فصل 4  تا 7
سوالات کاربر تولید محتوا از فصل 4 تا 7
 
بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )
بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )
بخش اول :كاربرد رايانه در برق (آموزش ساده سيمولينك )
 
آزمون تولیدمحتوا
آزمون تولیدمحتواآزمون تولیدمحتوا
آزمون تولیدمحتوا
 
Sadra
SadraSadra
Sadra
 
Scrum Presentation
Scrum PresentationScrum Presentation
Scrum Presentation
 
توسعه امن نرم افزار
توسعه امن نرم افزارتوسعه امن نرم افزار
توسعه امن نرم افزار
 
کتاب امنیت
کتاب امنیتکتاب امنیت
کتاب امنیت
 
برنامه سازی3
برنامه سازی3برنامه سازی3
برنامه سازی3
 
سیستم تئوری
سیستم تئوریسیستم تئوری
سیستم تئوری
 
AngularJS
AngularJSAngularJS
AngularJS
 
Kunagi سیستم مدیریت پروژه آنلاین
Kunagi  سیستم مدیریت پروژه آنلاینKunagi  سیستم مدیریت پروژه آنلاین
Kunagi سیستم مدیریت پروژه آنلاین
 
Mohamady zahedy c#
Mohamady zahedy c#Mohamady zahedy c#
Mohamady zahedy c#
 
Install windows server 2012 r2 in persian
Install windows server 2012 r2 in persianInstall windows server 2012 r2 in persian
Install windows server 2012 r2 in persian
 
سیستم عامل جلد دوم
سیستم عامل جلد دومسیستم عامل جلد دوم
سیستم عامل جلد دوم
 
pydev-On-Eclipse
pydev-On-Eclipsepydev-On-Eclipse
pydev-On-Eclipse
 
MIPS and QtSpim
MIPS and QtSpimMIPS and QtSpim
MIPS and QtSpim
 
C++
C++C++
C++
 
C++
C++C++
C++
 
How to program with c in persian
How to program with c in persianHow to program with c in persian
How to program with c in persian
 
News
NewsNews
News
 

More from Mohammad Amin Amjadi (15)

Seminar-Parallel Processing
Seminar-Parallel ProcessingSeminar-Parallel Processing
Seminar-Parallel Processing
 
Seminar-Architecture
Seminar-ArchitectureSeminar-Architecture
Seminar-Architecture
 
Image Cryptography and Steganography
Image Cryptography and SteganographyImage Cryptography and Steganography
Image Cryptography and Steganography
 
memetic algorithm
memetic algorithmmemetic algorithm
memetic algorithm
 
Amjadi - Ebook 7 - Class - v1
Amjadi - Ebook 7 - Class - v1Amjadi - Ebook 7 - Class - v1
Amjadi - Ebook 7 - Class - v1
 
Amjadi - Ebook 6 - Ref,Out - v1
Amjadi - Ebook 6 - Ref,Out - v1Amjadi - Ebook 6 - Ref,Out - v1
Amjadi - Ebook 6 - Ref,Out - v1
 
Amjadi - Ebook 5 - Function - v1
Amjadi - Ebook 5 - Function - v1Amjadi - Ebook 5 - Function - v1
Amjadi - Ebook 5 - Function - v1
 
my project
my projectmy project
my project
 
Rajabi
RajabiRajabi
Rajabi
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Amjadi
AmjadiAmjadi
Amjadi
 
rivercode.PDF
rivercode.PDFrivercode.PDF
rivercode.PDF
 
GPGPU
GPGPUGPGPU
GPGPU
 
Lecture3
Lecture3Lecture3
Lecture3
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 

Az Micro

  • 2. 2 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫مقدمه‬ ‫کنترلر‬ ‫میکرو‬ ‫با‬ ‫کار‬ ‫و‬ ‫میکروکنترلر‬ ‫کاربرد‬ ‫و‬ ‫مفاهیم‬ ‫با‬ ‫ریزپردازنده‬ ‫درس‬ ‫در‬avr. ‫شدیم‬ ‫آشنا‬ ‫میکروکنترلر‬ ‫با‬ ‫خواهیم‬ ‫می‬ ‫حال‬Arm. ‫دهیم‬ ‫انجام‬ ‫عملی‬ ‫بصورت‬ ‫را‬ ‫شده‬ ‫مطرح‬ ‫مباحث‬ ‫و‬ ‫شویم‬ ‫آشنا‬ ‫معرفی‬ ‫به‬ ‫اینجا‬ ‫در‬Lpc2368: ‫پردازیم‬ ‫می‬ ‫میکرو‬Lpc2368‫میکروکنترلرهای‬ ‫سری‬ ‫از‬ARM 7‫نوع‬ ‫از‬ ‫آنها‬ ‫هسته‬ ‫که‬ ،ARM7TDMI‫نوع‬ ‫از‬ ‫آن‬ ‫معماری‬ ‫و‬ARMv4T ‫واحدپردازش‬ ‫دارای‬ ‫و‬32‫کاری‬ ‫فرکانس‬ ‫با‬ ‫بیتی‬72MHZ. ‫باشد‬ ‫می‬ ‫میکروکنترلر‬ ‫این‬011‫میکرو‬ ‫داخلی‬ ‫واحدهای‬ ‫به‬ ‫که‬ ، ‫بوده‬ ‫پایه‬‫جمله‬ ‫از‬PLL،GPIO،ethernet،CAN،SPI،UART ،USB،c2 i،s2 i،ADC،DAC،PWM،SSP. ‫اند‬ ‫شده‬ ‫داده‬ ‫اختصاص‬ : ‫جانبی‬ ‫دستگاه‬ ‫اتصال‬ ‫نیازمند‬ ، ‫نمائیم‬ ‫متصل‬ ‫جانبی‬ ‫دستگاه‬ ‫یک‬ ‫به‬ ‫را‬ ‫میکرو‬ ‫بتوانیم‬ ‫اینکه‬ ‫برای‬‫آن‬‫مق‬ ‫میکرو‬ ‫های‬ ‫پایه‬ ‫به‬ ، ‫بتوانیم‬ ‫تا‬ ‫هستیم‬‫بدهیم‬ ‫دار‬ ‫واحد‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫منظور‬ ‫بدین‬ ، ‫بخوانیم‬ ‫را‬ ‫آنها‬ ‫مقدار‬ ‫یا‬ ‫و‬GPIO‫دسترسی‬ ‫میکرو‬ ‫های‬ ‫پایه‬ ‫به‬‫خواهیم‬‫داشت‬. ‫واحد‬ ‫در‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬GPIO‫فقط‬ ،“0”‫و‬“1”. )‫است‬ ‫دیجیتالی‬ ‫واحد‬ ‫یک‬ ( ‫است‬ ‫شده‬ ‫شناخته‬ ‫منطقی‬ ‫رجیسترهای‬ ‫و‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫با‬ ‫ریزپردازنده‬ ‫درس‬ ‫در‬DDR،PORT‫و‬PIN‫در‬avr‫رجیسترها‬ ‫این‬ ‫عملکرد‬ ، ‫شدیم‬ ‫آشنا‬ ‫در‬avr‫واحد‬ ‫با‬ ‫کار‬ ‫همانند‬GPIO‫در‬ARM. ‫باشد‬ ‫می‬ ‫آنالوگ‬ ‫واحدهای‬ ‫نیازمند‬ ‫آنالوگ‬ ‫خروجی‬ ‫یا‬ ‫ورودی‬ ‫داشتن‬ ‫جهت‬ADC‫یا‬ )‫دیجیتال‬ ‫به‬ ‫آنالوگ‬ ‫(مبدل‬DAC‫دیجیتال‬ ‫(مبدل‬ )‫آنالوگ‬ ‫به‬‫که‬ ، ‫هستیم‬Lpc2368. ‫باشد‬ ‫می‬ ‫دارا‬ ‫را‬ ‫واحدها‬ ‫این‬ ‫پر‬ ‫یک‬ ‫از‬ ‫که‬ ‫جانبی‬ ‫های‬ ‫دستگاه‬ ‫به‬ ‫اتصال‬ ‫جهت‬‫و‬‫همچون‬ ‫خاص‬ ‫تکل‬ethernet،c2 i،CAN،USB،s2 i،SPI‫استفاده‬ ‫توسط‬ ‫ها‬ ‫پروتکل‬ ‫این‬ ‫تمامی‬ ‫که‬ ، ‫نمود‬ ‫استفاده‬ ‫مربوطه‬ ‫پروتکل‬ ‫از‬ ‫باید‬ ، ‫کنند‬ ‫می‬Lpc2368‫شود‬ ‫می‬ ‫پشتیبانی‬.
  • 3. 3 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ Keil ‫افزار‬ ‫نرم‬ ‫از‬Keil‫یک‬ ‫که‬IDE‫می‬ ‫استفاده‬ ‫میکرو‬ ‫روی‬ ‫ریزی‬ ‫برنامه‬ ‫قابل‬ ‫خروجی‬ ‫فایل‬ ‫ساخت‬ ‫و‬ ‫نویسی‬ ‫برنامه‬ ‫برای‬ ، ‫باشد‬ ‫می‬ . ‫شود‬ ‫همچون‬ ‫دیگری‬ ‫کامپایلرهای‬IAR،ADS،Cross Work،Win Arm‫و‬Flow Code‫دارد‬ ‫وجود‬ ‫نیز‬. ‫نحوه‬Crack‫نمودن‬Keil: 0.‫آیکون‬ ‫روی‬‫گزینه‬ ‫سپس‬ ‫و‬ ‫نمائید‬ ‫کلیک‬ ‫راست‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬ ‫بود‬ ‫فعال‬ ‫صورت‬ ‫در‬‫ن‬UAC(User Account Control‫ویندوزهای‬ ‫در‬ ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫که‬ ، ‫ویندوز‬ )Vista ،Seven،Win 8‫و‬Win 8.1(Blue)‫حالت‬ ‫در‬ ‫که‬ ‫برنامه‬ ‫به‬ ‫دادن‬ ‫اجازه‬ ‫جهت‬ ‫ای‬ ‫پنجره‬ ، ‫است‬ ‫فعال‬ administator‫گزینه‬ ‫و‬ ، ‫شود‬ ‫می‬ ‫باز‬ ‫شود‬ ‫اجرا‬Yes. ‫نمائید‬ ‫انتخاب‬ ‫را‬ 2.‫منوی‬ ‫از‬‫گزینه‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬ 3.‫پنجره‬ ‫راست‬ ‫سمت‬ ‫در‬، ‫شده‬ ‫باز‬CID. ‫نمائید‬ ‫کپی‬ ‫آنرا‬ ، ‫است‬ ‫رویت‬ ‫قابل‬ 4.‫فایل‬Crack، ‫نمائید‬ ‫اجرا‬ ‫را‬‫قسمت‬ ‫در‬ ‫و‬CID،CID‫را‬ ‫شده‬ ‫کپی‬Paste. ‫نمائید‬ 5.‫قسمت‬ ‫در‬Target‫گزینه‬ ،ARM: ‫نمائید‬ ‫انتخاب‬ ‫را‬ 6.‫گزینه‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬ 7.: ‫نمائید‬ ‫کپی‬ ‫را‬ ‫شده‬ ‫ایجاد‬ ‫کد‬ 8.‫در‬ ‫را‬ ‫کد‬Keil‫قسمت‬ ‫و‬Paste: ‫نمائید‬ 9.‫گزینه‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬
  • 4. 4 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫با‬ ‫کار‬ ‫شروع‬Keil 0.‫نمودن‬ ‫باز‬ ‫از‬ ‫پس‬Keil،‫منوی‬ ‫از‬‫گزینه‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬ 2.، ‫نمود‬ ‫انتخاب‬ ‫را‬ ‫پروژه‬ ‫ذخیره‬ ‫محل‬ ‫باید‬ ‫حال‬، ‫نمائید‬ ‫ایجاد‬ ‫خود‬ ‫پروژه‬ ‫ذخیره‬ ‫برای‬ ‫پوشه‬ ‫یک‬ ‫نظرتان‬ ‫مورد‬ ‫مسیر‬ ‫در‬ ‫سپس‬ ‫و‬‫گزینه‬ ‫و‬ ‫نموده‬ ‫وارد‬ ‫را‬ ‫خود‬ ‫پروژه‬ ‫نام‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬ 3.‫نوع‬ ‫باید‬ ، ‫شده‬ ‫باز‬ ‫پنجره‬ ‫در‬CPU‫نمائیم‬ ‫می‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫که‬ ‫است‬ ‫میکرویی‬ ‫مدل‬ ‫همان‬ ‫که‬ ، ‫نمائیم‬ ‫انتخاب‬ ‫را‬ ‫خود‬ ‫شاخه‬ ‫وارد‬ ،‫گزینه‬ ‫سپس‬ ‫و‬ ‫شده‬‫انتخاب‬ ‫را‬‫نموده‬‫روی‬ ‫سپس‬ ‫و‬‫کلیک‬ . ‫نمائید‬ 4.‫شده‬ ‫باز‬ ‫پنجره‬ ‫در‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬ 5.: ‫بنویسیم‬ ‫آن‬ ‫در‬ ‫را‬ ‫خود‬ ‫اصلی‬ ‫برنامه‬ ‫تا‬ ، ‫نمائیم‬ ‫ایجاد‬ ‫فایل‬ ‫یک‬ ‫باید‬ ‫حال‬ ‫آیکون‬ ‫روی‬ ‫بر‬‫منوی‬ ‫از‬ ‫یا‬ ‫و‬ ‫نمائید‬ ‫کلیک‬‫گزینه‬‫با‬ ‫که‬ ، ‫نمائید‬ ‫انتخاب‬ ‫را‬ ‫بر‬ ‫میان‬ ‫کلید‬Ctrl + N. ‫است‬ ‫فراخوانی‬ ‫قابل‬ ‫یک‬Tab‫همانند‬ ،. ‫است‬ ‫شده‬ ‫ایجاد‬ ‫که‬ ‫است‬ ‫جدیدی‬ ‫فایل‬ ‫دهنده‬ ‫نشان‬ ‫که‬ ، ‫شود‬ ‫می‬ ‫ایجاد‬ 6.‫آیکون‬ ‫روی‬ ‫بر‬‫منوی‬ ‫از‬ ‫یا‬ ‫و‬ ‫نمائید‬ ‫کلیک‬‫گزینه‬‫با‬ ‫که‬ ، ‫نمائید‬ ‫انتخاب‬ ‫را‬ ‫بر‬ ‫میان‬ ‫کلید‬Ctrl + S. ‫است‬ ‫فراخوانی‬ ‫قابل‬ 7.‫باشید‬ ‫داشته‬ ‫توجه‬ ‫فقط‬ ، ‫نمائید‬ ‫ذخیره‬ ‫دلخواه‬ ‫اسمی‬ ‫با‬ ‫را‬ ‫فایل‬ ‫این‬ ، ‫اید‬ ‫نموده‬ ‫ذخیره‬ ‫را‬ ‫خود‬ ‫پروژه‬ ‫که‬ ‫ای‬ ‫پوشه‬ ‫در‬ ‫باید‬ ‫خود‬ ‫نظر‬ ‫مورد‬ ‫نام‬ ‫آخر‬ ‫در‬ ‫که‬“.c”‫یا‬“.cpp”‫را‬ ‫خود‬ ‫فایل‬ ‫نام‬ ‫بخواهیم‬ ‫اگر‬ ‫مثال‬ ‫؛‬ ‫نمائید‬ ‫وارد‬ ‫را‬“main” ‫باید‬ ‫بگذاریم‬“main.c”‫یا‬ ‫و‬“main.cpp”‫وار‬ ‫را‬‫سپس‬ ‫و‬ ‫نمائیم‬ ‫د‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬ 8.: ‫نمائیم‬ ‫اضافه‬ ‫خود‬ ‫پروژه‬ ‫به‬ ‫را‬ ‫شده‬ ‫ذخیره‬ ‫فایل‬ ‫باید‬ ‫حال‬ ‫در‬‫قسمت‬ ‫برنامه‬ ‫چپ‬ ‫سمت‬Project: ‫دارد‬ ‫وجود‬
  • 5. 5 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫توان‬ ‫می‬‫ید‬‫گروه‬ ‫به‬ ‫را‬ ‫خود‬ ‫کد‬‫گروه‬ ‫یک‬ ‫یا‬ ‫و‬‫اضافه‬ ‫جدید‬‫نمائید‬. ( ‫موجود‬ ‫های‬ ‫گزینه‬ ‫از‬ ‫یکی‬ ‫روی‬ ‫گروه‬ ‫یک‬ ‫ایجاد‬ ‫برای‬Target 1،Source Group 1‫یا‬ ‫و‬LPC2300.s‫راست‬ ) : ‫نمائید‬ ‫کلیک‬ ‫گزینه‬‫نمائید‬ ‫انتخاب‬ ‫را‬‫ن‬ ‫سپس‬ ‫و‬ ،‫سپس‬ ‫و‬ ‫نمائید‬ ‫وارد‬ ‫را‬ ‫شده‬ ‫ایجاد‬ ‫گروه‬ ‫ام‬Enter. ‫بزنید‬ ‫را‬ ‫گزینه‬ ‫سپس‬ ‫و‬ ‫نمائید‬ ‫کلیک‬ ‫راست‬ ‫خود‬ ‫نظر‬ ‫مورد‬ ‫گروه‬ ‫روی‬ ‫بر‬: ‫نمائید‬ ‫انتخاب‬ ‫را‬ ‫روی‬ ‫وسپس‬ ‫انتخاب‬ ‫را‬ ‫اید‬ ‫نموده‬ ‫ذخیره‬ ‫و‬ ‫ایجاد‬ ‫که‬ ‫را‬ ‫فایلی‬ ‫حال‬. ‫بزنید‬ 9.‫اینجا‬ ‫(در‬ ‫برنامه‬ ‫اصلی‬ ‫فایل‬ ‫در‬main.c‫خود‬ ‫برنامه‬ ‫کد‬ ‫باید‬ ): ‫نمائید‬ ‫وارد‬ ‫را‬ ‫زیر‬ ‫کد‬ ‫؛‬ ‫بنویسیم‬ ‫را‬ #include "Lpc23xx.h" int main() { while(1) { } } 01.‫ششم‬ ‫گام‬ ‫(در‬ ‫نمائید‬ ‫ذخیره‬ ‫را‬ ‫خود‬ ‫کد‬. )‫است‬ ‫شده‬ ‫ذکر‬ ‫نمودن‬ ‫ذخیره‬ ‫های‬ ‫روش‬ 00.‫هیچ‬ ‫کدمان‬ ‫آیا‬ ‫که‬ ، ‫ببینیم‬ ‫خواهیم‬ ‫می‬ ‫حال‬error‫یا‬warning: ‫نه‬ ‫یا‬ ‫دارد‬ ‫ای‬ ‫آیکون‬()‫یا‬(): ‫نمائید‬ ‫اتخاب‬ ‫را‬ ‫منوی‬ ‫از‬ ‫یا‬ ‫و‬‫گزینه‬‫یا‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬‫ولی‬ ‫کند‬ ‫می‬ ‫اسمبل‬ ‫و‬ ‫کامپایل‬ ‫را‬ ، ‫اند‬ ‫کرده‬ ‫تغییر‬ ‫که‬ ‫هایی‬ ‫فایل‬ ‫فایل‬ ‫دو‬ ‫هر‬ ‫و‬ ‫کند‬ ‫می‬ ‫اسمبل‬ ‫و‬ ‫کامپایل‬ ‫را‬ ‫ها‬ ‫فایل‬ ‫تمام‬object‫خروجی‬ ‫به‬ ‫مربوط‬ ‫که‬ ‫(فایل‬ ‫سازند‬ ‫می‬ ‫را‬ ‫است‬ ‫کامپایل‬hex‫توضیحات‬ ، ‫شود‬ ‫می‬ ‫ساخته‬ ‫روش‬ ‫دو‬ ‫هر‬ ‫در‬ ‫پروژه‬ ‫بودن‬ ‫تنظیم‬ ‫صورت‬ ‫در‬ ‫نیز‬ ‫نم‬ ‫تنظیم‬ ‫به‬ ‫مربوط‬‫فایل‬ ‫ساخت‬ ‫جهت‬ ‫پروژه‬ ‫ودن‬hex)‫است‬ ‫شده‬ ‫ذکر‬ ‫بعدی‬ ‫گام‬ ‫در‬ ‫میکرو‬ ‫نمودن‬ ‫پروگرام‬ ‫برای‬
  • 6. 6 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫نتیجه‬ ، ‫برنامه‬ ‫درپایین‬build( ‫پروژه‬error،warning،Program Size: ‫است‬ ‫مشاهده‬ ‫قابل‬ ) 02.‫فایل‬ ‫تا‬ ‫نمائیم‬ ‫تنظیم‬ ‫را‬ ‫پروژه‬ ‫خواهیم‬ ‫می‬ ‫حال‬hex: ‫شود‬ ‫ساخته‬ ‫میکرو‬ ‫روی‬ ‫نمودن‬ ‫پروگرام‬ ‫جهت‬ ‫آیکون‬(‫منوی‬ ‫از‬ ‫یا‬ ‫و‬ ‫نمائید‬ ‫انتخاب‬ ‫را‬ )‫گزینه‬ ‫بر‬ ‫میان‬ ‫کلید‬ ‫با‬ ‫که‬ ‫نمائید‬ ‫انتخاب‬ ‫را‬Alt+F7‫فراخوانی‬ ‫قابل‬ ‫است‬‫قسمت‬ ‫از‬ ‫اگر‬ ‫دوم‬ ‫روش‬ ‫در‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ ‫؛‬Project،‫کدنویسی‬ ‫حال‬ ‫در‬ ‫یا‬ ‫و‬ ‫باشد‬ ‫انتخاب‬ ، ‫باشیم‬Target Options‫قسمت‬ ‫از‬ ‫مثال‬ ‫اگر‬ ‫و‬ ، ‫شود‬ ‫می‬ ‫باز‬Project،‫سپس‬ ‫و‬ ‫نمائیم‬ ‫انتخاب‬ ‫را‬Alt + F7‫فایل‬ ‫به‬ ‫مربوط‬ ‫تنظیمات‬ ‫همان‬ ‫که‬ ‫انتخابی‬ ‫گزینه‬ ‫به‬ ‫مربوط‬ ‫تنظیمات‬ ، ‫بفشاریم‬ ‫را‬main.c. ‫شود‬ ‫می‬ ‫باز‬ ‫است‬ ‫سربرگ‬ ‫شده‬ ‫باز‬ ‫پنجره‬ ‫در‬‫سپس‬ ‫و‬ ‫نموده‬ ‫انتخاب‬ ‫را‬‫به‬ ‫مربوط‬ ‫تیک‬‫سپس‬ ‫و‬ ‫نمائید‬ ‫فعال‬ ‫را‬ . ‫نمائید‬ ‫انتخاب‬ ‫را‬ ‫اگر‬ ‫حال‬‫گزینه‬Build‫(گام‬ ‫نمائید‬ ‫انتخاب‬ ‫را‬02‫همنام‬ ‫فایلی‬ ، ‫اید‬ ‫نموده‬ ‫ذخیره‬ ‫را‬ ‫خود‬ ‫پروژه‬ ‫که‬ ‫جایی‬ ‫همان‬ ‫در‬ ، ) ‫پسوند‬ ‫با‬ ‫پروژه‬ ‫با‬“.h”‫ایجاد‬، ‫شود‬ ‫می‬. ‫شود‬ ‫می‬ ‫استفاده‬ ‫میکرو‬ ‫روی‬ ‫نمودن‬ ‫پروگرام‬ ‫برای‬ ‫که‬
  • 7. 7 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫و‬ ‫نویسی‬ ‫برنامه‬ ‫نکات‬Keil 0.‫زبان‬ ‫به‬ ‫باید‬ ، ‫نویسیم‬ ‫می‬ ‫که‬ ‫ای‬ ‫برنامه‬c‫باشد‬‫و‬ ‫؛‬‫زبان‬ ‫کدنویسی‬ ‫برای‬c++‫توسط‬ ‫که‬ ‫مناسب‬ ‫گرامر‬ ‫به‬Keil‫پشتیبانی‬ . ‫نمود‬ ‫دقت‬ ‫باید‬ ، ‫شود‬ 2.‫در‬Keil 5‫فایل‬ ‫یک‬ ‫بخواهیم‬ ‫اگر‬: ‫نمود‬ ‫طی‬ ‫را‬ ‫زیر‬ ‫مراحل‬ ‫توان‬ ‫می‬ ، ‫نمائیم‬ ‫اضافه‬ ‫پروژه‬ ‫به‬ ‫و‬ ‫ایجاد‬ 2.0.‫روی‬ ‫بر‬: ‫نمائید‬ ‫کلیک‬ ‫راست‬ ‫فایل‬ ‫نمودن‬ ‫اضافه‬ ‫و‬ ‫ایجاد‬ ‫جهت‬ ‫نظر‬ ‫مورد‬ ‫گروه‬ 2.2.‫گزینه‬. ‫نمائید‬ ‫انتخاب‬ ‫را‬ 2.3.‫فایل‬ ‫نام‬ ‫و‬ ‫نوع‬ ، ‫شده‬ ‫باز‬ ‫پنجره‬ ‫در‬‫نمائید‬ ‫انتخاب‬ ‫را‬ ‫خود‬ ‫نظر‬ ‫مورد‬‫سپس‬ ‫و‬. ‫نموده‬ ‫انتخاب‬ ‫را‬ 3.‫با‬ ‫واال‬ ، ‫باشند‬ ‫داشته‬ ‫خالی‬ ‫خط‬ ‫یک‬ ‫خود‬ ‫آخر‬ ‫خط‬ ‫در‬ ‫باید‬ ‫شوند‬ ‫می‬ ‫اضافه‬ ‫پروژه‬ ‫به‬ ‫که‬ ‫های‬ ‫فایل‬ ‫تمام‬warning‫زیر‬ : ‫شویم‬ ‫می‬ ‫مواجه‬ 4.‫روی‬ ‫که‬ ‫وقتی‬Build. ‫شوند‬ ‫می‬ ‫بررسی‬ ‫سپس‬ ‫و‬ ‫شوند‬ ‫می‬ ‫ذخیره‬ ‫خودکار‬ ‫بصورت‬ ‫ها‬ ‫فایل‬ ، ‫میزنیم‬ 5.‫وق‬‫کدمان‬ ‫در‬ ‫که‬ ‫تی‬،‫خط‬‫نویسیم‬ ‫می‬ ‫را‬ ‫زیر‬‫فایل‬ ،“lpc23xx.h”‫خود‬ ‫هدرهای‬ ‫در‬ ‫باید‬Keil. ‫باشد‬ ‫موجود‬ #include <Lpc23xx.h>
  • 8. 8 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ 6.، ‫کدمان‬ ‫در‬ ‫که‬ ‫وقتی‬‫فایل‬ ، ‫نویسیم‬ ‫می‬ ‫را‬ ‫زیر‬ ‫خط‬“lpc23xx.h”‫خود‬ ‫هدرهای‬ ‫در‬ ‫باید‬Keil‫مربوط‬ ‫پوشه‬ ‫در‬ ‫یا‬ ‫و‬ ‫پروژه‬ ‫به‬. ‫باشد‬ ‫موجود‬ #include “Lpc23xx.h” 7.‫در‬Keil،V5.0.5.15‫فایل‬ ‫همانند‬ ‫میکروها‬ ‫به‬ ‫مربوط‬ ‫هدر‬ ‫های‬ ‫فایل‬ ،“lpc23xx.h”‫مشخصات‬ ‫و‬CPU‫به‬ ‫که‬ ‫ها‬ ‫از‬ ‫نسخه‬ ‫این‬ ‫با‬ ‫توان‬ ‫نمی‬ ‫پس‬ ، ‫ندارد‬ ‫وجود‬ ، ‫نمودیم‬ ‫می‬ ‫انتخاب‬ ‫پروژه‬ ‫یک‬ ‫ایزد‬ ‫هنگام‬Keil، ‫نمود‬ ‫ایجاد‬ ‫را‬ ‫پروژه‬ ‫یک‬ ‫آنرا‬ ‫بتوان‬ ‫که‬Build‫همچون‬ ‫نیاز‬ ‫مورد‬ ‫های‬ ‫فایل‬ ‫خودمان‬ ‫آنکه‬ ‫مگر‬ ، ‫نمود‬“lpc23xx.h”‫پ‬ ‫در‬ ‫را‬‫کپی‬ ‫پروژه‬ ‫وشه‬ ‫یا‬ ‫و‬ ، ‫نمائیم‬‫مجبوریم‬‫نسخه‬ ‫با‬ ‫را‬ ‫خود‬ ‫پروژه‬4! ‫نمائیم‬ ‫ایجاد‬ 8.‫حلقه‬ ‫یک‬ ، ‫نویسیم‬ ‫می‬ ‫میکرو‬ ‫برای‬ ‫که‬ ‫ای‬ ‫برنامه‬ ‫در‬ ‫شود‬ ‫می‬ ‫توصیه‬while‫تا‬ ، ‫بنویسیم‬ ‫پایان‬ ‫بدون‬cpu، ‫میکرو‬ . ‫باشد‬ ‫داشته‬ ‫اجرا‬ ‫برای‬ ‫دستوری‬ ‫همیشه‬ 9.‫داخل‬ ، ‫شود‬ ‫تعریف‬ ‫زیر‬ ‫بصورت‬ ‫متغییری‬ ‫که‬ ‫وقتی‬SRAM: ‫شود‬ ‫می‬ ‫ذخیره‬ ‫میکرو‬ int x ; ‫که‬ ‫اکنون‬x‫حافظه‬ ‫داخل‬SRAM، ‫است‬ ‫شده‬ ‫تعریف‬. ‫است‬ ‫دهی‬ ‫مقدار‬ ‫و‬ ‫تغییر‬ ‫قابل‬ ‫برنامه‬ ‫اجرای‬ ‫طول‬ ‫در‬ 01.‫حافظه‬ ‫داخل‬ ، ‫شود‬ ‫تعریف‬ ‫زیر‬ ‫بصورت‬ ‫متغییری‬ ‫که‬ ‫وقتی‬Flash: ‫شود‬ ‫می‬ ‫ذخیره‬ const int x = 1 ; const‫حافظه‬ ‫در‬ ‫متغییر‬ ‫ذخیره‬ ‫دهنده‬ ‫نشان‬Flash‫متغییر‬ ‫و‬ ، ‫باشد‬ ‫می‬‫مقدار‬ ‫حتما‬ ‫باید‬ ‫تعریف‬ ‫با‬ ‫همراه‬‫شود‬ ‫دهی‬ ‫آن‬ ‫تغییر‬ ‫امکان‬ ‫و‬‫که‬ ‫متغییری‬ ‫به‬ ‫اگر‬ ‫و‬ ، ‫ندارد‬ ‫وجود‬ ‫برنامه‬ ‫اجرای‬ ‫طول‬ ‫در‬Const‫با‬ ‫بدهیم‬ ‫مقدار‬ ‫است‬error‫زیر‬ : ‫شویم‬ ‫می‬ ‫مواجه‬ 00.‫که‬ ‫صورتی‬ ‫در‬x‫بصورت‬const‫با‬ ، ‫باشد‬ ‫نشده‬ ‫اولیه‬ ‫دهی‬ ‫مقدار‬ ‫و‬ ، ‫است‬ ‫شده‬ ‫تعریف‬warning‫می‬ ‫مواجه‬ ‫زیر‬ : ‫شویم‬ 02.‫با‬ ، ‫نشود‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫و‬ ، ‫شود‬ ‫تعریف‬ ‫متغییر‬ ‫یک‬ ‫که‬ ‫صورتی‬ ‫در‬warning: ‫شویم‬ ‫می‬ ‫مواجه‬ ‫زیر‬ 03.‫متغییرها‬‫و‬ ‫شوند‬ ‫تعریف‬ ‫بالک‬ ‫ابتدای‬ ‫در‬ ‫باید‬‫تعریف‬ ‫بالک‬ ‫ابتدای‬ ‫در‬ ‫متغییری‬ ‫اگر‬‫ن‬‫با‬ ، ‫شود‬warning‫مواجه‬ ‫زیر‬ : ‫شویم‬ ‫می‬ 04.‫حلقه‬ ‫نوشتن‬ ‫در‬ ، ‫قبل‬ ‫نکته‬ ‫به‬ ‫توجه‬ ‫با‬for‫؟‬ ‫است‬ ‫درست‬ ‫بنظرتون‬ ‫زیر‬ ‫کد‬ ، ‫باشیم‬ ‫داشته‬ ‫دقت‬ ‫باید‬ int main() { //My Code 1 for(int i = 0 ; i < 100 ; i++) { //My Code 2 } }
  • 9. 9 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ، ‫که‬ ‫است‬ ‫این‬ ‫قبل‬ ‫صفحه‬ ‫در‬ ‫شده‬ ‫نوشته‬ ‫کد‬ ‫مشکل‬int i‫بدنه‬ ‫داخل‬ ‫را‬for‫نکته‬ ‫به‬ ‫توجه‬ ‫با‬ ، ‫ایم‬ ‫نموده‬ ‫تعریف‬ : ‫است‬ ‫زیر‬ ‫بصورت‬ ‫درست‬ ‫کد‬ ‫پس‬ ، ‫شوند‬ ‫تعریف‬ ‫بالک‬ ‫ابتدای‬ ‫در‬ ‫باید‬ ‫متغییرها‬ ‫قبل‬ int main() { int i; //My Code 1 for(i = 0 ; i < 100 ; i++) { //My Code 2 } } ‫به‬ ‫بستگی‬ ‫و‬ ، ‫هستند‬ ‫درست‬ ‫دو‬ ‫هر‬ ‫که‬ ‫نوشت‬ ‫توان‬ ‫می‬ ‫زیر‬ ‫صورت‬ ‫دو‬ ‫به‬ ، ‫باشیم‬ ‫داشته‬ ‫تودرتو‬ ‫حلقه‬ ‫دو‬ ‫اگر‬ ‫حال‬ : ‫بنویسیم‬ ‫صورت‬ ‫کدام‬ ‫به‬ ‫که‬ ‫دارد‬ ‫کدمان‬ int main() { int i; int j; //My Code 1 for(i = 0 ; i < 100 ; i++) { //My Code 2 for(j = 100 ; j > i ; j--) {/*My Code 3*/} } } int main() { int i; //My Code 1 for(i = 0 ; i < 100 ; i++) { int j; //My Code 2 for(j = 100 ; j > i ; j--) {/*My Code 3*/} } } 05.‫هیچ‬ ‫به‬ ‫و‬ ‫شود‬ ‫اجرا‬ ‫مدام‬ ‫که‬ ‫بنویسیم‬ ‫حلقه‬ ‫یک‬ ‫اگر‬‫وجه‬، ‫بنویسیم‬ ‫حلقه‬ ‫این‬ ‫از‬ ‫بد‬ ‫کدی‬ ‫اگر‬ ، ‫نشویم‬ ‫خارج‬ ‫حلقه‬ ‫از‬ ‫با‬ ‫که‬ ، ‫زیر‬ ‫کد‬ ‫همانند‬ ، ‫شد‬ ‫نخواهند‬ ‫اجرا‬ ‫هرگز‬warning: ‫شویم‬ ‫می‬ ‫مواجه‬ int main() { //My Code 1 while(1) { //My Code 2 , without break } // My Code 3 . never execution } 06.‫با‬ ، ‫شود‬ ‫تعریف‬ ‫بار‬ ‫یک‬ ‫از‬ ‫بیش‬ ‫متغییر‬ ‫یک‬ ‫اگر‬error: ‫شویم‬ ‫می‬ ‫مواجه‬ ‫زیر‬ int main() { int x; int x; }
  • 10. 11 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫که‬ ‫است‬ ‫واضح‬ ، ‫قبل‬ ‫صفحه‬ ‫کد‬ ‫در‬x‫نباید‬ ‫متغییر‬ ‫یک‬ ‫اینکه‬ ‫به‬ ‫توجه‬ ‫با‬ ، ‫است‬ ‫شده‬ ‫تعریف‬ ‫دوبار‬‫تعر‬ ‫یکبار‬ ‫از‬ ‫بیش‬‫یف‬ ‫را‬ ‫فایل‬ ‫یک‬ ‫وقتی‬ ، ‫باشیم‬ ‫داشته‬ ‫توجه‬ ‫باید‬ ‫پس‬ ، ‫شود‬include‫آن‬ ‫متغییرهای‬ ‫با‬ ‫همنامی‬ ‫متغییر‬ ‫هیچ‬ ، ‫کنیم‬ ‫می‬ . ‫باشیم‬ ‫نداشته‬ ‫فایل‬ 07.‫متغییر‬ ‫یک‬ ‫به‬ ‫دهی‬ ‫مقدار‬int: ‫است‬ ‫پذیر‬ ‫امکان‬ ‫زیر‬ ‫های‬ ‫بصورت‬ ‫عدد‬ ‫خواهیم‬ ‫می‬029‫یک‬ ‫در‬ ‫را‬int‫عدد‬ ‫به‬ ‫دهیم‬ ‫قرار‬029: ‫نمائید‬ ‫توجه‬ 4 bit : L(Low)4 bit : H(High) Bit#01234567 10000001 1H(Hex)8H(Hex) 07.0.: ‫دهی‬ ‫ده‬ ، ‫دهی‬ ‫مقدار‬ int x = 129 ; 07.2.‫مقدار‬‫دهی‬: ‫شیفت‬ ‫عملگر‬ ‫طریق‬ ‫از‬ ‫ها‬ ‫بیت‬ ‫به‬ int x = (1 << 0) | (1 << 7); 07.3.‫مبنای‬ ‫در‬ ‫دهی‬ ‫مقدار‬16(Hex: )‫عدد‬Hex‫نماد‬ ‫از‬ ‫بعد‬ ‫را‬“0x”: ‫نویسیم‬ ‫می‬ int x = 0x81; 08.‫یابد‬ ‫کاهش‬ ‫برنامه‬ ‫کد‬ ‫حجم‬ ‫تا‬ ‫شود‬ ‫استفاده‬ ‫مناسب‬ ‫نوع‬ ‫از‬ ‫متغییر‬ ‫تعریف‬ ‫برای‬ ‫شود‬ ‫سعی‬. : ‫است‬ ‫مشاهده‬ ‫قابل‬ ، ‫دارند‬ ‫را‬ ‫کاربردها‬ ‫بیشترین‬ ‫که‬ ‫متغییرهایی‬ ‫انواع‬ ‫زیر‬ ‫جدول‬ ‫در‬ Size (bits)Type 8char 16short 32int 32long 64long long 32float 64double 64long double 32pointers
  • 11. 11 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫پروگرامر‬ : ‫پروگرامر‬ ‫نمای‬ ‫روی‬ ‫را‬ ‫است‬ ‫متصل‬ ‫آنها‬ ‫به‬ ‫سفید‬ ‫و‬ ‫سبز‬ ‫های‬ ‫سیم‬ ‫باال‬ ‫شکل‬ ‫در‬ ‫که‬ ‫هدر‬ ‫پین‬ ‫دو‬ ، ‫ابتدا‬ ‫در‬Mini Lpc Programmer‫لحیم‬ ‫حدود‬ ‫ولتاژی‬ ‫دارای‬ ‫سبز‬ ‫سیم‬ ‫به‬ ‫متصل‬ ‫پین‬ ، ‫نمائید‬5v‫سبز‬ ‫سیم‬ ‫متصل‬ ‫پین‬ ‫و‬ ‫بوده‬Gnd. ‫بوده‬
  • 12. 12 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫پروگرامر‬ ‫وسایل‬ ‫اتصال‬ ‫محل‬ ‫خازن‬ ‫منفی‬ ‫و‬ ‫مثبت‬ ‫های‬ ‫پایه‬ ‫به‬10uf. ‫نمائید‬ ‫دقت‬ ‫سوئیچ‬ ‫دیپ‬2‫های‬ ‫پایه‬ ‫اتصال‬ ‫برای‬ ، ‫تایی‬98‫و‬99‫به‬Mini Lpc Programmer‫پروگرام‬ ‫هنگام‬ ‫به‬ ‫فقط‬ ‫و‬ ، ‫باشد‬ ‫می‬ ‫از‬ ‫استفاده‬ ‫یا‬ ‫و‬ ‫نمودن‬UART0‫باید‬ ‫کامپیوتر‬ ‫با‬ ‫ارتباط‬ ‫برای‬ON‫که‬ ‫شود‬ ‫می‬ ‫توصیه‬ ‫واال‬ ‫باشند‬off. ‫باشد‬ ‫سوئیچ‬ ‫دیپ‬4: ‫تایی‬ ‫کلید‬0‫اتصال‬ ‫برقرای‬ ‫برای‬ :GND‫باال‬ ‫شکل‬ ‫در‬ ‫که‬ ‫هایی‬ ‫پین‬ ‫به‬Gnd‫شده‬ ‫درج‬ ‫کنارشان‬ ‫در‬ ‫کلید‬2‫اتصال‬ ‫برای‬ :3.3v‫باال‬ ‫شکل‬ ‫در‬ ‫که‬ ‫هایی‬ ‫پین‬ ‫به‬3.3‫شده‬ ‫درج‬ ‫کنارشان‬ ‫در‬ ‫کلید‬3‫نمودن‬ ‫پروگرام‬ ‫برای‬ : ‫کلید‬4‫میکرو‬ ‫نمودن‬ ‫روشن‬ ‫برای‬ :
  • 13. 13 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫و‬ ‫مدار‬ ‫تغذیه‬ ‫اتصال‬ ‫نحوه‬Mini Lpc Programmer : ‫سبز‬5v : ‫سفید‬Gnd
  • 14. 14 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫میکرو‬ ‫نمودن‬ ‫پروگرام‬ ‫از‬ ‫اینجا‬ ‫در‬ ‫نمودن‬ ‫پروگرام‬ ‫برای‬Mini Lpc Programmer‫برنامه‬ ‫و‬Flash Magic. ‫نمائیم‬ ‫می‬ ‫استفاده‬ : ‫باشند‬ ‫زیر‬ ‫جدول‬ ‫طبق‬ ‫باید‬ ‫ها‬ ‫پایه‬ ‫وضعیت‬ ، ‫میکرو‬ ‫نمون‬ ‫پروگرام‬ ‫برای‬ ‫پایه‬89‫پایه‬ ‫به‬ ‫اتصال‬Rx،Mini Lpc Programmer ‫پایه‬88‫پایه‬ ‫به‬ ‫اتصال‬Tx،Mini Lpc Programmer ‫پایه‬71‫پایه‬ ‫به‬ ‫اتصال‬Rst،Mini Lpc Programmer ‫پایه‬35‫به‬ ‫اتصال‬Gnd ، ‫جدول‬ ‫در‬ ‫شده‬ ‫ذکر‬ ‫های‬ ‫پایه‬ ‫اتصال‬ ‫از‬ ‫پس‬Mini Lpc Programmer‫که‬ ‫نمائید‬ ‫توجه‬ ، ‫نمائید‬ ‫متصل‬ ‫کامپیوتر‬ ‫به‬ ‫را‬ Driver‫اتصال‬ ‫از‬ ‫پس‬ ، ‫باشید‬ ‫نموده‬ ‫نصب‬ ‫خود‬ ‫سیستم‬ ‫روی‬ ‫بر‬ ‫را‬ ‫آن‬Mini Lpc Programmer‫پورت‬ ‫یک‬ ، ‫کامپیوتر‬ ‫به‬ COM‫پورت‬ ‫شماره‬ ، ‫شود‬ ‫می‬ ‫ساخته‬COM. ‫باشید‬ ‫داشته‬ ‫نظر‬ ‫در‬ ‫را‬ ‫پورت‬ ‫شماره‬ ‫مشاهده‬ ‫برای‬COM‫به‬Device Manager. ‫نمائید‬ ‫مراجعه‬ ‫ویندوز‬ ‫برنامه‬Flash Magic: ‫دهید‬ ‫انجام‬ ‫را‬ ‫زیر‬ ‫تنظیمات‬ ‫و‬ ‫نمائید‬ ‫اجرا‬ ‫را‬ 0.‫گزینه‬Select: ‫نمائید‬ ‫انتخاب‬ ‫را‬ ‫شاخه‬ ‫زیر‬،. ‫نمائید‬ ‫انتخاب‬ ‫را‬ 2.‫پورت‬ ‫شماره‬COM‫به‬ ‫مربوط‬ ،Mini Lpc Programmer: ‫نمائید‬ ‫انتخاب‬ ‫را‬ 3.( ‫بیت‬ ‫انتقال‬ ‫نرخ‬Baud Rate: ‫نمائید‬ ‫انتخاب‬ ‫را‬ ) ‫بین‬ ‫معموال‬ ، ‫انتقال‬ ‫نرخ‬19200‫و‬115200. ‫شود‬ ‫می‬ ‫انتخاب‬ 4.: ‫نمائید‬ ‫وارد‬ ‫را‬ ‫میکرو‬ ‫به‬ ‫متصل‬ ‫کریستال‬ ‫مقدار‬ 5.‫تیک‬ ‫نه‬ ‫یا‬ ‫است‬ ‫شده‬ ‫پروگرام‬ ‫درستی‬ ‫به‬ ‫میکرو‬ ‫آیا‬ ‫که‬ ‫شود‬ ‫بررسی‬ ، ‫میکرو‬ ‫شدن‬ ‫پروگرام‬ ‫از‬ ‫بعد‬ ‫اینکه‬ ‫جهت‬ . ‫نمائید‬ ‫فعال‬ ‫را‬ 6.‫تیک‬‫حافظه‬ ، ‫میکرو‬ ‫شدن‬ ‫پروگرام‬ ‫از‬ ‫قبل‬ ‫تا‬ ، ‫نمائید‬ ‫فعال‬ ‫را‬Flash. ‫شود‬ ‫پاک‬ ‫توانید‬ ‫می‬‫تیک‬، ‫هستند‬ ‫نیاز‬ ‫مورد‬ ‫که‬ ‫حافظه‬ ‫از‬ ‫هایی‬ ‫بالک‬ ‫فقط‬ ‫تا‬ ، ‫نمائید‬ ‫فعال‬ ‫را‬ . ‫شوند‬ ‫پاک‬
  • 15. 15 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫میکنیم‬ ‫چک‬ ‫حال‬‫ک‬‫شود‬ ‫می‬ ‫شناخته‬ ‫میکرو‬ ‫آیا‬ ‫ه‬‫؟‬‫منوی‬ ‫از‬، ‫گزینه‬: ‫نمائید‬ ‫انتخاب‬ ‫را‬ ‫زیر‬ ‫شکل‬ ‫همانند‬ ‫ای‬ ‫پنجره‬ ‫در‬ ، ‫شود‬ ‫شناخته‬ ‫میکرو‬ ‫اگر‬Device ID‫و‬Bootloader Ver: ‫است‬ ‫مشاهده‬ ‫قابل‬ ‫برنامه‬ ‫تنظیمات‬ ‫که‬ ‫صورتی‬ ‫در‬Flash Magic‫باشد‬ ‫خراب‬ ‫میکرو‬ ‫یا‬ ‫و‬ ‫باشد‬ ‫نشده‬ ‫انجام‬ ‫درستی‬ ‫به‬‫میکرو‬ ‫های‬ ‫پایه‬ ‫اتصال‬ ‫یا‬ ‫و‬ ‫و‬Mini Lpc Programmer، ‫نباشد‬ ‫برقرار‬ ‫بدرستی‬: ‫شویم‬ ‫می‬ ‫مواجه‬ ‫زیر‬ ‫شکل‬ ‫همانند‬ ‫خطایی‬ ‫با‬ ‫شماره‬ ‫که‬ ‫صورتی‬ ‫در‬‫پورت‬COM‫در‬Flash Magic‫اتصال‬ ‫یا‬ ‫و‬ ‫باشد‬ ‫نشده‬ ‫انتخاب‬ ‫درستی‬ ‫به‬Mini Lpc Programmer : ‫شویم‬ ‫می‬ ‫مواجه‬ ‫زیر‬ ‫خطای‬ ‫با‬ ، ‫شود‬ ‫قطع‬ ‫کامپیوتر‬ ‫با‬ ‫ب‬ ‫میکرو‬ ‫روی‬ ‫را‬ ‫خود‬ ‫برنامه‬ ‫خواهیم‬ ‫می‬ ‫حال‬: ‫ریزیم‬ 0.‫روی‬ ‫بر‬‫فایل‬ ‫و‬ ‫بروید‬ ‫خود‬ ‫پروژه‬ ‫ذخیره‬ ‫محل‬ ‫به‬ ، ‫نمائید‬ ‫کلیک‬“.h”. ‫نمائید‬ ‫انتخاب‬ ‫را‬ 2.‫روی‬ ‫بر‬. ‫نمائید‬ ‫کلیک‬ 3.! ‫باشید‬ ‫صبور‬ ‫میکرو‬ ‫شدن‬ ‫پروگرام‬ ‫تا‬
  • 16. 16 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫دیاگرام‬ ‫بالک‬Lpc2368 ‫داخلی‬ ‫واحدهای‬Lpc 2368: ‫آن‬ ‫های‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫همراه‬ ‫به‬
  • 17. 17 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫میکرو‬ ‫داخلی‬ ‫واحدهای‬ ‫با‬ ‫مرتبط‬ ‫رجیسترهای‬ ‫با‬ ‫باید‬ ‫واحد‬ ‫هر‬ ‫با‬ ‫کار‬ ‫برای‬ ، ‫است‬ ‫مشاهده‬ ‫قابل‬ ‫میکرو‬ ‫داخلی‬ ‫واحدهای‬ ، ‫قبل‬ ‫صفحه‬ ‫دیاگرام‬ ‫بالک‬ ‫در‬ ‫نمود‬ ‫کار‬ ‫واحد‬ ‫آن‬. ‫به‬ ‫بیشتر‬ ‫اطالعات‬ ‫کسب‬ ‫جهت‬ ‫توانید‬ ‫می‬ ‫که‬ ، ‫است‬ ‫خود‬ ‫خاص‬ ‫آدرس‬ ‫و‬ ‫عمکلرد‬ ‫دارای‬ ‫رجیستر‬ ‫هر‬User Manual‫میکرو‬ ‫؛‬ ‫نمائید‬ ‫مراجعه‬‫سری‬ ‫رجیسترهای‬ ‫تمام‬ ‫زیر‬ ‫جدول‬ ‫در‬Lpc23xx: ‫است‬ ‫مشاهده‬ ‫قابل‬ ‫رجیسترها‬ ‫شماره‬ ‫در‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬(a:b)‫اعداد‬ ‫از‬ ‫یکی‬ ‫جایگذاری‬ ‫معنای‬ ‫به‬a‫تا‬b، ‫همچنین‬ ‫و‬ ‫است‬(a,b)‫معنای‬ ‫به‬ ‫جایگذاری‬a‫یا‬b: ً ‫مثال‬ ، ‫است‬PINSEL(0:10)‫رجیسترهای‬ ‫وجود‬ ‫معنای‬ ‫به‬PINSEL0،PINSEL1،PINSEL2، PINSEL3‫و‬ ..... ،PINSEL10‫همچنین‬ ‫و‬ ‫است‬IO(0,2)_INT_EN_R‫رجیسترهای‬ ‫وجود‬ ‫معنای‬ ‫به‬IO0_INT_EN_R ‫و‬IO2_INT_EN_R. ‫است‬ Vectored Interrupt Controller (VIC) VICVectAddr(0:31)VICIntEnClrVICIRQStatus VICVectCntl(0:31)= VICVectPriority0(0:31) VICSoftIntVICFIQStatus VICSoftIntClrVICRawIntr VICProtectionVICIntSelect VICSWPrioMaskVICIntEnable Pin Connect Block PINMODE(0:9)PINSEL(0:10) General Purpose Input/Output (GPIO) IOCLR(0:1)IOSET(0:1)IOPIN(0:1) IODIR(0:1) GPIO Interrupt Registers IO(0,2)_INT_STAT_RIO(0,2)_INT_EN_FIO(0,2)_INT_EN_R IO_INT_STATIO(0,2)_INT_CLRIO(0,2)_INT_STAT_F PARTCFG Fast I/O setup FIO(0:4)PINFIO(0:4)MASKFIO(0:4)DIR FIO(0:4)DIR(0:3,L,U)FIO(0:4)CLRFIO(0:4)SET FIO(0:4)SET(0:3,L,U)FIO(0:4)PIN(0:3,L,U)FIO(0:4)MASK(0:3,L,U) FIO(0:4)CLR(0:3,L,U)
  • 18. 18 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫میکرو‬ ‫رجیسترهای‬ Memory Accelerator Module (MAM) MEMMAPMAMTIMMAMCR Phase Locked Loop (PLL) PLLSTATPLLCFGPLLCON PLLFEED Power Control PCONPPCON Clock Divider CLKSRCSELUSBCLKCFGCCLKCFG PCLKSEL(0:1) External Interrupts EXTMODEINTWAKEEXTINT EXTPOLAR Reset, reset source identification RSIR RSID, code security protection CSPR AHB configuration AHBCFG(1:2) System Controls and Status SCS
  • 19. 19 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫میکرو‬ ‫رجیسترهای‬ MPMC(EMC) registers DYNAMIC_MEM(0:3)_BASESTATIC_MEM(0:3)_BASE External Memory Controller (EMC) EMC_CONFIGEMC_STATEMC_CTRL Dynamic RAM access registers EMC_DYN_RD_CFGEMC_DYN_RFSHEMC_DYN_CTRL EMC_DYN_SREXEMC_DYN_RASEMC_DYN_RP EMC_DYN_WREMC_DYN_DALEMC_DYN_APR EMC_DYN_XSREMC_DYN_RFCEMC_DYN_RC EMC_DYN_CFG(0:3)EMC_DYN_MRDEMC_DYN_RRD EMC_DYN_RASCAS(0:3) static RAM access registers EMC_STA_WAITOEN(0:3)EMC_STA_WAITWEN(0:3)EMC_STA_CFG(0:3) EMC_STA_WAITWR(0:3)EMC_STA_WAITPAGE(0:3)EMC_STA_WAITRD(0:3) EMC_STA_WAITTURN(0:3) Timer (0:3) T(0:3)TCT(0:3)TCRT(0:3)IR T(0:3)MCRT(0:3)PCT(0:3)PR T(0:3)CR(0:3)T(0:3)CCRT(0:3)MR(0:3) T(0:3)CTCRT(0:3)EMR Pulse Width Modulator (PWM) (0:1) PWM(0:1)TCPWM(0:1)TCRPWM(0:1)IR PWM(0:1)MCRPWM(0:1)PCPWM(0:1)PR PWM(0:1)CR(0:3)PWM(0:1)CCRPWM(0:1)MR(0:6) PWM(0:1)CTCRPWM(0:1)LERPWM(0:1)PCR
  • 20. 21 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫میکرو‬ ‫رجیسترهای‬ Universal Asynchronous Receiver Transmitter (0,2,3) (UART(0,2,3)) U(0,2,3)DLLU(0,2,3)THRU(0,2,3)RBR U(0,2,3)IIRU(0,2,3)IERU(0,2,3)DLM U(0,2,3)LSRU(0,2,3)LCRU(0,2,3)FCR U(0,2,3)ICRU(0,2,3)ACRU(0,2,3)SCR U(0,2,3)TERU(0,2,3)FDR Universal Asynchronous Receiver Transmitter 1 (UART1) U1DLLU1THRU1RBR U1IIRU1IERU1DLM U1MCRU1LCRU1FCR U1SCRU1MSRU1LSR U1TERU1FDRU1ACR I2C Interface (0:2) I2(0:2)DATI2(0:2)STATI2(0:2)CONSET I2(0:2)SCLLI2(0:2)SCLHI2(0:2)ADR I2(0:2)CONCLR SPI0 (Serial Peripheral Interface 0) S0SPDRS0SPSRS0SPCR S0SPINTS0SPCCR SSP(0:1) Controller SSP(0:1)SRSSP(0:1)DRSSP(0:1)CR(0:1) SSP(0:1)RISSSP(0:1)IMSCSSP(0:1)CPSR SSP(0:1)DMACRSSP(0:1)ICRSSP(0:1)MIS A/D Converter 0 (AD0) AD0INTENAD0GDRAD0CR AD0STATAD0DR(0:7) D/A Converter DACR
  • 21. 21 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫میکرو‬ ‫رجیسترهای‬ Real Time Clock (RTC) RTC_CCRRTC_CTCRTC_ILR RTC_CTIME(0:2)RTC_AMRRTC_CIIR RTC_HOURRTC_MINRTC_SEC RTC_DOYRTC_DOWRTC_DOM RTC_CISSRTC_YEARRTC_MONTH RTC_ALHOURRTC_ALMINRTC_ALSEC RTC_ALDOYRTC_ALDOWRTC_ALDOM RTC_PREINTRTC_ALYEARRTC_ALMON RTC_PREFRAC Watchdog WDFEEDWDTCWDMOD WDCLKSELWDTV CAN CONTROLLERS AND ACCEPTANCE FILTER (1:2) CAN_SFF_GRP_SACAN_SFF_SACAN_AFMR CAN_EOTCAN_EFF_GRP_SACAN_EFF_SA CAN_TX_SRCAN_LUT_ERRCAN_LUT_ERR_ADR CAN(1:2)MODCAN_MSRCAN_RX_SR CAN(1:2)ICRCAN(1:2)GSRCAN(1:2)CMR CAN(1:2)EWLCAN(1:2)BTRCAN(1:2)IER CAN(1:2)RIDCAN(1:2)RFSCAN(1:2)SR CAN(1:2)TFI(1:3)CAN(1:2)RDBCAN(1:2)RDA CAN(1:2)TDB(1:3)CAN(1:2)TDA(1:3)CAN(1:2)TID(1:3) MultiMedia Card Interface(MCI) Controller MCI_ARGUMENTMCI_CLOCKMCI_POWER MCI_RESP(0:3)MCI_RESP_CMDMCI_COMMAND MCI_DATA_CTRLMCI_DATA_LENMCI_DATA_TMR MCI_CLEARMCI_STATUSMCI_DATA_CNT MCI_FIFOMCI_FIFO_CNTMCI_MASK(0:1)
  • 22. 22 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫میکرو‬ ‫رجیسترهای‬ I2S Interface Controller (I2S) I2S_TX_FIFOI2S_DAII2S_DAO I2S_DMA(1:2)I2S_STATEI2S_RX_FIFO I2S_RXRATEI2S_TXRATEI2S_IRQ General-purpose DMA Controller GPDMA_INT_TCCLRGPDMA_INT_TCSTATGPDMA_INT_STAT GPDMA_RAW_INT_TCSTATGPDMA_INT_ERR_CLRGPDMA_INT_ERR_STAT GPDMA_SOFT_BREQGPDMA_ENABLED_CHNSGPDMA_RAW_INT_ERR_STAT GPDMA_SOFT_LSREQGPDMA_SOFT_LBREQGPDMA_SOFT_SREQ GPDMA_SYNCGPDMA_CONFIG DMA channel (0:1) registers GPDMA_CH(0:1)_LLIGPDMA_CH(0:1)_DESTGPDMA_CH(0:1)_SRC GPDMA_CH(0:1)_CFGGPDMA_CH(0:1)_CTRL USB Controller USB_INT_STAT USB Device Interrupt Registers DEV_INT_CLRDEV_INT_ENDEV_INT_STAT DEV_INT_PRIODEV_INT_SET USB Device Endpoint Interrupt Registers EP_INT_CLREP_INT_ENEP_INT_STAT EP_INT_PRIOEP_INT_SET USB Device Endpoint Realization Registers MAXPACKET_SIZEEP_INDEXREALIZE_EP USB Device Command Reagisters CMD_DATACMD_CODE
  • 23. 23 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫میکرو‬ ‫رجیسترهای‬ USB Device Data Transfer Registers RX_PLENGTHTX_DATARX_DATA USB_CTRLTX_PLENGTH USB Device DMA Registers DMA_REQ_SETDMA_REQ_CLRDMA_REQ_STAT EP_DMA_ENEP_DMA_STATUDCA_HEAD DMA_INT_ENDMA_INT_STATEP_DMA_DIS EOT_INT_SETEOT_INT_CLREOT_INT_STAT NDD_REQ_INT_SETNDD_REQ_INT_CLRNDD_REQ_INT_STAT SYS_ERR_INT_SETSYS_ERR_INT_CLRSYS_ERR_INT_STAT USB Host Controller HC_CMD_STATHC_CONTROLHC_REVISION HC_INT_DISHC_INT_ENHC_INT_STAT HC_CTRL_HEAD_EDHC_PERIOD_CUR_EDHC_HCCA HC_BULK_CUR_EDHC_BULK_HEAD_EDHC_CTRL_CUR_ED HC_FM_REMAININGHC_FM_INTERVALHC_DONE_HEAD HC_LS_THRHLDHC_PERIOD_STARTHC_FM_NUMBER HC_RH_STATHC_RH_DESCBHC_RH_DESCA HC_RH_PORT_STAT(1:2) USB OTG Controller OTG_INT_SETOTG_INT_ENOTG_INT_STAT OTG_I2C_RXOTG_TIMEROTG_INT_CLR OTG_I2C_CTLOTG_I2C_STSOTG_I2C_TX USBPortSelOTG_I2C_CLKLOOTG_I2C_CLKHI USBClkStUSBClkCtrl
  • 24. 24 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫میکرو‬ ‫رجیسترهای‬ USB Device Data Transfer Registers Ethernet MAC (32 bit data bus) MAC_IPGRMAC_IPGTMAC_MAC(1:2) MAC_SUPPMAC_MAXFMAC_CLRT MAC_MCMDMAC_MCFGMAC_TEST MAC_MRDDMAC_MWTDMAC_MADR MAC_COMMANDMAC_SA(0:2)MAC_MIND MAC_RXSTATUSMAC_RXDESCRIPTORMAC_STATUS MAC_RXCONSUMEINDEXMAC_RXPRODUCEINDEXMAC_RXDESCRIPTORNUM MAC_TXDESCRIPTORNUMMAC_TXSTATUSMAC_TXDESCRIPTOR MAC_TSV(0:1)MAC_TXCONSUMEINDEXMAC_TXPRODUCEINDEX MAC_FLOWCONTROLSTSMAC_FLOWCONTROLCNTMAC_RSV MAC_RXFILTERWOLCLRMAC_RXFILTERWOLSTSMAC_RXFILTERCTRL MAC_INTSTATUSMAC_HASHFILTERHMAC_HASHFILTERL MAC_INTSETMAC_INTCLEARMAC_INTENABLE MAC_MODULEIDMAC_POWERDOWN
  • 25. 25 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ General Purpose Input/Output ports(GPIO) ‫بین‬ ‫از‬011، ‫میکرو‬ ‫پایه‬71‫واحد‬ ‫به‬ ‫پایه‬GPIO. ‫است‬ ‫شده‬ ‫داده‬ ‫اختصاص‬ GPIO‫که‬71‫داده‬ ‫اختصاص‬ ‫آن‬ ‫به‬ ‫میکرو‬ ‫از‬ ‫پایه‬‫دارای‬ ، ‫است‬ ‫شده‬5‫پورت‬PORT0‫الی‬PORT4. ‫باشد‬ ‫می‬ ‫به‬ ‫و‬ ‫شده‬ ‫داده‬ ‫اختصاص‬ )‫(فیزیکی‬ ‫خارجی‬ ‫پایه‬ ‫برخی‬ ‫به‬ ‫که‬ ، ‫بوده‬ ‫ها‬ ‫پین‬ ‫از‬ ‫ای‬ ‫مجموعه‬ ‫پورت‬ ‫هر‬‫نشده‬ ‫داده‬ ‫اختصاص‬ ‫برخی‬ . ‫است‬ ‫و‬ ‫خارجی‬ ‫پایه‬ ‫دارای‬ ‫کنیم‬ ‫می‬ ‫کار‬ ‫آن‬ ‫با‬ ‫که‬ ‫ای‬ ‫پین‬ ‫که‬ ، ‫باشیم‬ ‫داشته‬ ‫توجه‬ ‫باید‬ ‫جانبی‬ ‫دستگاه‬ ‫اتصال‬ ‫و‬ ‫نویسی‬ ‫برنامه‬ ‫برای‬ . ‫نمود‬ ‫وصل‬ ‫سیم‬ ‫آن‬ ‫به‬ ‫بتوان‬ ‫تا‬ ‫باشد‬ ‫فیزیکی‬ ‫پورت‬ ‫و‬ ‫پین‬ ‫شماره‬ ‫از‬ ‫باید‬ ‫و‬ ، ‫نیست‬ ‫شده‬ ‫شناخته‬ ‫پایه‬ ‫نام‬ ‫به‬ ‫چیزی‬ ‫نویسی‬ ‫کد‬ ‫در‬. ‫نمود‬ ‫استفاده‬ ‫پایه‬ ‫از‬ ‫برخی‬‫ها‬‫پایه‬ ‫مثال‬ ، ‫است‬ ‫مشترک‬ ‫میکرو‬ ‫واحد‬ ‫چند‬ ‫بین‬98‫شماره‬ ‫پین‬ ،2‫واحد‬ ‫به‬ ‫مربوط‬ ‫که‬ ‫باشد‬ ‫می‬ ‫صفر‬ ‫پورت‬ ‫از‬ GPIO‫به‬ ‫مربوط‬ ‫پایه‬ ‫این‬ ‫همچنین‬ ‫و‬ ‫بوده‬TXD0‫واحد‬UART0. ‫باشد‬ ‫می‬ ‫نیز‬ : ‫پورت‬ ‫هر‬ ‫اطالعات‬ ‫های‬ ‫جدول‬ ‫در‬‫بعد‬ ‫صفحه‬،‫هر‬ ‫اطالعات‬PORT. ‫است‬ ‫مشاهده‬ ‫قابل‬ ‫در‬ ‫پایه‬ ‫آن‬ ‫که‬ ‫است‬ ‫هایی‬ ‫سایرنقش‬ ‫کننده‬ ‫مشخص‬ ‫همچنین‬ ‫و‬ ‫پین‬ ‫شماره‬ ، ‫پایه‬ ‫شماره‬ ، ‫پورت‬ ‫شماره‬ ‫شامل‬ ‫اطالعات‬ ‫این‬ . ‫نماید‬ ‫می‬ ‫ایفا‬ ‫میکرو‬ ‫به‬ ‫اطالعات‬: ‫است‬ ‫شده‬ ‫داده‬ ‫نمایش‬ ‫صوت‬ ‫این‬ ‫پایه‬ ‫شماره‬ |‫میکرو‬ ‫در‬ ‫پایه‬ ‫نقش‬ : ‫مثال‬‫قسمت‬ ‫در‬Port 0‫در‬‫دومین‬‫داریم‬ ‫سطر‬: 47 | P0 1,TD1,RXD3,SCL1 ‫پایه‬71‫میکرو‬ P0,1‫صفر‬ ‫پورت‬ ‫از‬ ‫یک‬ ‫پین‬‫واحد‬ ‫به‬ ‫مربوط‬GPIO TD1‫اطالعات‬ ‫ارسال‬ ‫پایه‬‫واحد‬ ‫به‬ ‫مربوط‬CAN 1 SCL1‫ورودی/خروجی‬ ‫کالک‬‫واحد‬ ‫به‬ ‫مربوط‬c 12 i
  • 26. 26 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫پورت‬ ‫هر‬ ‫اطالعات‬ PORT 0PORT 1PORT 2 46 | P0 0,RD1,TXD3,SDA1 47 | P0 1,TD1,RXD3,SCL1 98 | P0 2,TXD0 99 | P0 3,RXD0 81 | P0 4,I2SRC,RD2,CAP20 80 | P0 5,I2SRW,TD2,CAP21 79 | P0 6,I2SRD,SSEL1,MAT20 78 | P0 7,I2STC,SCK1,MAT21 77 | P0 8,I2STW,MOSO1,MAT22 76 | P0 9,I2STD,MOSI1,MAT23 48 | P0 10,TXD2,SDA2,MAT30 49 | P0 11,RXD2,SCL2,MAT31 62 | P0 15,TXD1,SCK0,SCK 63 | P0 16,RXD1,SSEL0,SSEL 61 | P0 17,CTS1,MISO0,MISO 60 | P0 18,DCD1,MOSI0,MOSI 59 | P0 19,DSR1,MCICLK,SDA1 58 | P0 20,DTR1,MCICMD,SCL1 57 | P0 21,RI1,MCIPWR,RD1 56 | P0 22,RTS1,MCIDAT0,TD1 9 | P0 23,AD00,I2SRC,CAP30 8 | P0 24,AD01,I2SRW,CAP31 7 | P0 25,AD02,I2SRD,TXD3 6 | P0 26,AD03,AOUT,RXD3 25 | P0 27,SDA0 24 | P0 28,SCL0 29 | P0 29,USB_D+ 30 | P0 30,USB_D- 95 | P1 0,ENET_TXD0 94 | P1 1,ENET_TXD1 93 | P1 4,ENET_TX_EN 92 | P1 8,ENET_CRS 91 | P1 9,ENET_RXD0 90 | P1 10,ENET_RXD1 89 | P1 14,RX_ER 88 | P1 15,ENET_REF_CLK 87 | P1 16,ENET_MDC 86 | P1 17,ENET_MDIO 32 | P1 18,USBLED,PWM1 1,CAP10 33 | P1 19,CAP11 34 | P1 20,PWM12,SCK0 35 | P1 21,PWM13,SSEL0 36 | P1 22,MAT10 37 | P1 23,PWM14 , MISO 0 38 | P1 24,PWM15 , MISI 0 39 | P1 25,MAT11 40 | P1 26,PWM16,CAP00 43 | P1 27,CAP01 44 | P1 28,PCAP10,MAT00 45 | P1 29,PCAP11,MAT01 21 | P1 30,VBUS,AD04 20 | P1 31,SCK1,AD05 75 | P2 0,PWM11,TXD1 74 | P2 1,PWM12,RXD1 73 | P2 2,PWM13,CTS1 70 | P2 3,PWM14,DCD1 69 | P2 4,PWM15,DSR1 68 | P2 5,PWM16,DTR1 67 | P2 6,PCAP10,RI1 66 | P2 7,RD2,RTS1 65 | P2 8,TD2,TXD2 64 | P2 9,USBCON,RXD2,EXTIN0 53 | P2 10,INT0 52 | P2 11,INT1,MCID1,I2STC 51 | P2 12,INT2,MCID2,I2STW 50 | P2 13,INT3,MCID3,I2STD PORT 3PORT 4 27 | P3 25,MAT00,PWM12 26 | P3 26,MAT01,PWM13 82 | P4 28,MAT20,TXD3 85 | P4 29,MAT21,RXD3
  • 27. 27 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫های‬ ‫ویژگی‬GPIO ‫های‬ ‫پورت‬0,1‫مد‬ ‫در‬Fast‫غیر‬ ‫و‬Fast(Slow)‫و‬ ‫هستند‬ ‫استفاده‬ ‫قابل‬PORT 2,3,4‫مدکاری‬ ‫دارای‬ ‫فقط‬Fast‫می‬ . ‫باشند‬ ‫مد‬ ‫از‬ ‫فقط‬ ‫اینجا‬ ‫در‬ ‫ما‬Fast. ‫نمائیم‬ ‫می‬ ‫استفاده‬ : ‫استفاده‬ ‫مورد‬ ‫رجیسترهای‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫رجیستر‬ ، ‫نموده‬ ‫استفاده‬ ‫آن‬ ‫به‬ ‫مربوط‬ ‫رجیسترهای‬ ‫از‬ ‫باید‬ ‫میکرو‬ ‫واحد‬ ‫هر‬ ‫با‬ ‫کار‬ ‫جهت‬GPIO‫در‬ ‫توانید‬ ‫می‬ ‫را‬ : ‫نمائید‬ ‫مشاهده‬ ‫زیر‬ ‫جدول‬‫از‬ ‫منظور‬ ‫رجیستر‬ ‫نام‬ ‫در‬x‫تا‬ ‫صفر‬ ‫از‬ ‫که‬ ‫پورت‬ ‫شماره‬4. ‫باشد‬ ‫می‬ ، ‫بوده‬ ‫ها‬ ‫پین‬‫ورودی/خروجی‬‫دسترسی‬ ‫امکان‬‫نمودن‬ ‫یک‬‫نمودن‬ ‫صفر‬‫خواندن‬ PIN 0 - 31FIOxDIRFIOxMASKFIOxSETFIOxCLRFIOxPIN PIN 0 – 7FIOxDIR0FIOxMASK0FIOxSET0FIOxCLR0FIOxPIN0 PIN 8 - 15FIOxDIR1FIOxMASK1FIOxSET1FIOxCLR1FIOxPIN1 PIN 16 – 23FIOxDIR2FIOxMASK2FIOxSET2FIOxCLR2FIOxPIN2 PIN 24 - 31FIOxDIR3FIOxMASK3FIOxSET3FIOxCLR3FIOxPIN3 PIN 0 - 15FIOxDIRLFIOxMASKLFIOxSETLFIOxCLRLFIOxPINL PIN 16 - 31FIOxDIRUFIOxMASKUFIOxSETUFIOxCLRUFIOxPINU . ‫بوده‬ ‫صفر‬ ، ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫رجیسترها‬ ‫مقدار‬ ‫باید‬ ، ‫کنیم‬ ‫کار‬ ‫آنها‬ ‫با‬ ‫بخواهیم‬ ‫که‬ ‫هایی‬ ‫پین‬MASK‫شان‬‫باشد‬ ‫صفر‬‫مقدار‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ ،MASK‫در‬ ‫ها‬ ‫پین‬ ‫تمام‬ ‫رجیستر‬ ‫در‬ ‫تغییر‬ ‫به‬ ‫نیازی‬ ‫پس‬ ، ‫باشد‬ ‫می‬ ‫صفر‬ ‫ابتدا‬MASK‫واحد‬ ‫و‬ ‫ها‬ ‫پین‬ ‫با‬ ‫کار‬ ‫جهت‬GPIO‫؛‬ ‫نداریم‬‫جهت‬ ‫کدها‬ ‫در‬ ‫البته‬ ‫بودن‬ ‫صفر‬ ‫دادن‬ ‫نشان‬ ‫و‬ ‫اطمینان‬MASK، ‫ها‬ ‫پین‬ ‫تمام‬MASK. ‫دهیم‬ ‫می‬ ‫قرار‬ ‫صفر‬ ‫با‬ ‫مساوی‬ ‫را‬ ‫اگر‬DIR. ‫باشد‬ ‫می‬ ‫خروجی‬ ‫باشد‬ ‫یک‬ ‫اگر‬ ‫و‬ ‫ورودی‬ ، ‫باشد‬ ‫صفر‬ ‫پین‬ ‫یک‬ ‫اینکه‬ ‫برای‬PORT0‫و‬PORT1‫مد‬ ‫در‬Fast‫فوق‬ ‫رجیسترهای‬ ‫با‬ ‫بتوانیم‬ ‫و‬ ‫بگیرند‬ ‫قرار‬‫پورت‬ ‫برای‬0‫و‬1‫بیت‬ ‫باید‬ ‫کارنمائیم‬ ‫رجیستر‬ ‫از‬ ‫اول‬SCS: ‫نمائیم‬ ‫یک‬ ‫را‬ SCS = 1; // Enabel Fast Port( P0 , P1) ‫نکته‬‫رجیستر‬ ‫از‬ ‫بیتهایی‬ ‫شدن‬ ‫یک‬ ‫با‬ :FIOxSET‫خواهند‬ ‫تغییر‬ ‫بدون‬ ‫ها‬ ‫پین‬ ‫سایر‬ ‫و‬ ‫شوند‬ ‫می‬ ‫یک‬ ، ‫متناظرشان‬ ‫های‬ ‫پین‬ ، ‫رجیستر‬ ‫و‬ ‫؛‬ ‫ماند‬FIOxCLR‫نخواهند‬ ‫تغییر‬ ‫ها‬ ‫پین‬ ‫سایر‬ ‫و‬ ‫کند‬ ‫می‬ ‫صفر‬ ‫را‬ ، ‫اند‬ ‫شده‬ ‫یک‬ ‫که‬ ‫هایی‬ ‫بیت‬ ‫با‬ ‫متناظر‬ ‫های‬ ‫پین‬ . ‫کرد‬ ‫از‬FIOxPIN‫پس‬ ، ‫شود‬ ‫می‬ ‫استفاده‬ ‫نیز‬ ‫ها‬ ‫پین‬ ‫به‬ ‫مستقیم‬ ‫مقداردهی‬ ‫و‬ ‫دسترسی‬ ‫جهت‬‫رجیستر‬ ‫این‬ ‫به‬ ‫که‬ ‫مقداری‬ ‫هر‬ . ‫شود‬ ‫می‬ ‫داده‬ ‫نسبت‬ ‫بیت‬ ‫آن‬ ‫متاظر‬ ‫های‬ ‫پین‬ ‫به‬ ، ‫شود‬ ‫داده‬ : ‫مثال‬
  • 28. 28 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫صفر‬ ‫پورت‬ ‫های‬ ‫پین‬ ‫کل‬ ، ‫مثال‬ ‫این‬ ‫در‬‫و‬ ‫شوند‬ ‫می‬ ‫صفر‬ ‫ثانیه‬ ‫یک‬ ‫سپس‬ ‫و‬ ، ‫یک‬ ‫ثانیه‬ ‫یک‬ ،‫این‬. ‫شود‬ ‫می‬ ‫تکرار‬ ‫روند‬ #include "Lpc23xx.h" #include "delay.h" int main() { SCS = 1; FIO0MASK = 0; FIO0DIR = 0xffffffff; while(1) { FIO0SET = 0xffffffff; delay_ms(500); FIO0CLR = 0xffffffff; delay_ms(500); } } ‫رجیستر‬ ‫هر‬ ‫بیت‬ ‫هر‬ ‫که‬ ‫نمائید‬ ‫توجه‬‫به‬ ‫مربوط‬ ‫شده‬ ‫ذکر‬‫واحد‬GPIO: ‫بوده‬ ‫پین‬ ‫یک‬ ‫به‬ ‫مربوط‬ Px.0Px.1Px.2Px.3Px.4Px.5……………………..Px.31 ‫های‬ ‫پین‬ ‫بخواهیم‬ ‫اگر‬0‫و‬3‫و‬4‫به‬ ‫که‬ ‫مقداری‬ ، ‫نمائیم‬ ‫یک‬ ‫را‬ ‫صفر‬ ‫پورت‬ ‫از‬FIO0SET: ‫با‬ ‫است‬ ‫برابر‬ ‫دهیم‬ ‫می‬ ‫نسبت‬ 01011000 : ‫نوشت‬ ‫توان‬ ‫می‬ ‫که‬ FIO0SET = 50; FIO0SET = 0x32; FIO0SET = (1 << 1) | (1<<3) | (1<<4); ‫رجیسترهای‬ ‫توان‬ ‫می‬FIOxSET‫و‬FIOxCLR‫رجیستر‬ ‫با‬ ‫را‬FIOxPIN: ‫نمود‬ ‫معادل‬ ‫زیر‬ ‫بصورت‬ int value = 0x85 // ‫دلخواه‬ ‫مقدار‬ FIO1PIN |= value;FIO1SET = value ; => FIO1PIN &= ~ value;FIO1CLR = value ; => FIOxPIN |= value;FIOxSET = value ; => FIOxPIN &= ~ value;FIOxCLR = value ; =>
  • 29. 29 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫داخلی‬ ‫های‬ ‫مقاومت‬ ‫رجیستر‬ ‫از‬ ‫کار‬ ‫این‬ ‫برای‬ ، ‫نمود‬ ‫مشخص‬ ‫را‬ ‫آنها‬ ‫وضعیت‬ ‫توان‬ ‫می‬ ‫که‬ ، ‫هستند‬ ‫داخلی‬ ‫مقاومت‬ ‫دارای‬ ‫میکرو‬ ‫های‬ ‫پین‬ ‫از‬ ‫کدام‬ ‫هر‬ PINMODEy‫شود‬ ‫می‬ ‫استفاده‬‫پورت‬ ‫شماره‬ ‫اگر‬ ‫که‬x‫مقدار‬ ، ‫باشد‬y‫باید‬ ،2x‫یا‬2x+1‫باشد‬: ‫رجیستر‬‫مربوطه‬‫پین‬ ‫شماره‬‫پورت‬ ‫شماره‬ PINMODE0‫تا‬ ‫صفر‬05‫صفر‬ ‫پورت‬ PINMODE106‫تا‬30 PINMODE2‫تا‬ ‫صفر‬05‫یک‬ ‫پورت‬ PINMODE306‫تا‬30 PINMODE4‫تا‬ ‫صفر‬05‫دو‬ ‫پورت‬ PINMODE506‫تا‬30 PINMODE6‫تا‬ ‫صفر‬05‫سه‬ ‫پورت‬ PINMODE706‫تا‬30 PINMODE8‫تا‬ ‫صفر‬05‫چهار‬ ‫پورت‬ PINMODE906‫تا‬30 ‫پورت‬ ‫برای‬x‫باید‬ ‫که‬‫از‬PINMODE(2x)‫و‬PINMODE(2x+1): ‫نمائیم‬ ‫استفاده‬ PINMODE(x)0123……3031 ‫صفر‬ ‫پین‬‫یک‬ ‫پین‬……‫پین‬05 PINMODE(2x+1)0123……3031 ‫پین‬06‫پین‬07……‫پین‬30 ، ‫بخواهیم‬ ‫اگر‬ ‫مثال‬PINMODE‫پین‬ ‫به‬ ‫مربوط‬17‫های‬ ‫بیت‬ ‫باید‬ ‫دهیم‬ ‫تغییر‬ ‫را‬ ‫یک‬ ‫پورت‬ ‫از‬2‫و‬3‫از‬PINMODE3‫را‬ . ‫دهیم‬ ‫تغییر‬ ‫به‬ ‫که‬ ‫مقداری‬PINMODE‫نسبت‬ ‫پین‬ ‫هر‬‫می‬: ‫شود‬ ‫می‬ ‫مشخص‬ ‫زیر‬ ‫جدول‬ ‫اساس‬ ‫بر‬ ، ‫دهیم‬ ‫مقاومت‬ ‫وضعیت‬‫به‬ ‫متصل‬‫پین‬‫مقدار‬PINMODE‫پین‬ ‫به‬ ‫مربوط‬ PullUp00 ‫نامعتبر‬01 ‫پین‬ ‫به‬ ‫مقاومت‬ ‫اتصال‬ ‫عدم‬(Open Collector)10 PullDown11 ‫توجه‬‫رجیستر‬ ‫مقدار‬ :PINMODE‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫ها‬ ‫پین‬ ‫تمام‬ ‫پس‬ ، ‫است‬ ‫صفر‬ ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫نیز‬PullUp ‫پین‬ ‫مقدار‬ ، ‫نشود‬ ‫اعمال‬ ‫پین‬ ‫به‬ ‫ولتاژی‬ ‫و‬ ، ‫باشند‬ ‫ورودی‬ ‫عنوان‬ ‫به‬ ‫که‬ ‫حالتی‬ ‫در‬ ‫و‬ ‫هستند‬"1". ‫بود‬ ‫خواهد‬
  • 30. 31 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫پین‬ ‫بخواهیم‬ ‫اگر‬ ‫مثال‬ ‫بطور‬5‫پورت‬ ‫از‬0‫را‬Pull Down: ‫نمائیم‬ ‫مقدار‬x‫برابر‬ ‫است‬ ‫پورت‬ ‫شماره‬ ‫نمودیم‬ ‫داد‬ ‫قرار‬ ‫که‬0: ‫است‬x=1 ‫مقدار‬ ‫باید‬ ‫پس‬y‫(برای‬PINMODEy، )2x‫و‬2x+1، ‫یعنی‬ ، ‫باشد‬y‫باید‬2‫یا‬3. ‫باشد‬ ‫چون‬، ‫کنیم‬ ‫می‬ ‫کار‬ ‫آن‬ ‫با‬ ‫که‬ ‫ای‬ ‫پین‬ ‫شماره‬5‫از‬ ‫و‬ ‫بوده‬16‫از‬ ‫باید‬ ‫است‬ ‫کمتر‬PINMODE2. ‫نمائیم‬ ‫استفاده‬ ‫مساوی‬ ‫بزرگتر‬ ‫پین‬ ‫شماره‬ ‫اگر‬06‫از‬ ‫باید‬ ‫باشد‬y=2x+1‫شود‬ ‫می‬ ‫اینجا‬ ‫در‬ ‫که‬ ، ‫نمائیم‬ ‫استفاده‬PINMODE3. ‫های‬ ‫بیت‬ ‫شماره‬ ‫واما‬PINMODE2. ‫دهیم‬ ‫تغییر‬ ‫باید‬ ‫را‬ ‫بیت‬ ‫دو‬ ‫کدام‬ ‫که‬ ، ‫ماند‬ ‫می‬ ‫پین‬ ‫شماره‬ ‫اگر‬‫مقدار‬ ‫را‬z‫مربوطه‬ ‫های‬ ‫بیت‬ ‫شماره‬ ، ‫بگیریم‬ ‫نظر‬ ‫در‬2(z%16)‫و‬2(z%16)+1. ‫بود‬ ‫خواهد‬ ‫پین‬ ‫شماره‬ ‫اینجا‬ ‫در‬z=5‫های‬ ‫بیت‬ ‫باید‬ ‫پس‬ ، ‫بوده‬01‫و‬00‫از‬PINMODE2‫پین‬ ‫این‬ ‫خواهیم‬ ‫می‬ ‫چون‬ ، ‫بدهیم‬ ‫مقدار‬ ‫را‬ Pull Down‫مقدار‬ ‫بیت‬ ‫دو‬ ‫هر‬ ‫به‬ ‫باید‬ ، ‫شود‬0‫بنویسیم‬ ‫کدمان‬ ‫در‬ ‫باید‬ ‫پس‬ ، ‫دهیم‬ ‫نصب‬ ‫را‬: PINMODE2 |= (1 << 10) | (1 << 11) ; ‫استفاده‬ ‫موارد‬: ‫باید‬ ‫ورودی‬ ‫داشتن‬ ‫جهت‬PINMODE‫نمود‬ ‫تنظیم‬ ‫را‬‫نوع‬ ‫و‬PINMODE‫به‬‫نوع‬‫ورودی‬‫دارد‬ ‫بستگی‬. 0.Pull Up)‫ولتاژ‬ ‫به‬ ‫اتصال‬ ‫با‬ ‫و‬ ، ‫باشد‬ ‫یک‬ ‫همیشه‬ ‫پین‬ ‫مقدار‬ ‫بخواهیم‬ ‫که‬ ‫زمانی‬"1"‫از‬ ، ‫بگیرد‬ ‫صفر‬ ‫مقدار‬PullUp : ‫نمائیم‬ ‫می‬ ‫استفاده‬ ( ‫صفر‬ ‫پورت‬ ‫از‬ ‫دو‬ ‫پین‬ ‫مقدار‬ ، ‫شود‬ ‫بسته‬ ‫سوئیچ‬ ‫وقتی‬ ، ‫زیر‬ ‫مدار‬ ‫در‬P0.2‫باید‬ ‫پین‬ ‫این‬ ‫پس‬ ، ‫شد‬ ‫خواهد‬ ‫صفر‬ ، ) (‫باشد‬ ‫داشته‬ ‫یک‬ ‫مقدار‬ ‫همیشه‬PullUp. ‫دهیم‬ ‫تشخیص‬ ‫را‬ ‫سوئیچ‬ ‫شدن‬ ‫بسته‬ ‫تا‬ ، )‫باشد‬ ‫سوئیچ‬ ‫شدن‬ ‫بسته‬ ‫با‬ ، ‫باشد‬ ‫صفر‬ ‫همیشه‬ ‫پین‬ ‫مقدار‬ ‫اگر‬،‫مقدا‬ ‫باز‬‫را‬ ‫سوئیچ‬ ‫شدن‬ ‫بسته‬ ‫توان‬ ‫نمی‬ ‫و‬ ‫است‬ ‫صفر‬ ‫پین‬ ‫ر‬ . ‫دهیم‬ ‫تشخیص‬
  • 31. 31 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ 2.PullDown‫ولتاژ‬ ‫به‬ ‫اتصال‬ ‫با‬ ‫و‬ ، ‫باشد‬ ‫صفر‬ ‫همیشه‬ ‫پین‬ ‫مقدار‬ ‫بخواهیم‬ ‫که‬ ‫زمانی‬ )"0"‫مقدار‬‫یک‬‫از‬ ، ‫بگیرد‬ PullDown: ‫نمائیم‬ ‫می‬ ‫استفاده‬ ( ‫صفر‬ ‫پورت‬ ‫از‬ ‫دو‬ ‫پین‬ ‫مقدار‬ ، ‫شود‬ ‫بسته‬ ‫سوئیچ‬ ‫وقتی‬ ، ‫زیر‬ ‫مدار‬ ‫در‬P0.2، )‫یک‬‫باید‬ ‫پین‬ ‫این‬ ‫پس‬ ، ‫شد‬ ‫خواهد‬ ‫مقدار‬ ‫همیشه‬‫صفر‬(‫باشد‬ ‫داشته‬PullDown. ‫دهیم‬ ‫تشخیص‬ ‫را‬ ‫سوئیچ‬ ‫شدن‬ ‫بسته‬ ‫تا‬ ، )‫باشد‬ ‫همیشه‬ ‫پین‬ ‫مقدار‬ ‫اگر‬‫یک‬‫پین‬ ‫مقدار‬ ‫باز‬ ، ‫سوئیچ‬ ‫شدن‬ ‫بسته‬ ‫با‬ ، ‫باشد‬‫یک‬‫را‬ ‫سوئیچ‬ ‫شدن‬ ‫بسته‬ ‫توان‬ ‫نمی‬ ‫و‬ ‫است‬ . ‫دهیم‬ ‫تشخیص‬ 3.Open Collector)‫حالت‬ ‫دو‬ ‫به‬PullUp‫و‬PullDown‫حالت‬ ‫در‬ ، ‫نمائید‬ ‫دقت‬PullUp‫مقدار‬ ‫با‬ ‫ورودی‬ ‫توان‬ ‫می‬ ‫حالت‬ ‫در‬ ‫و‬ ، ‫داد‬ ‫تشخیص‬ ‫را‬ ‫صفر‬PullDown‫ی‬ ‫مقدار‬ ‫با‬ ‫ورودی‬. ‫داد‬ ‫تشخیص‬ ‫توان‬ ‫می‬ ‫را‬ ‫ک‬ ‫از‬ ‫اگر‬ ، ‫نماید‬ ‫ارسال‬ ‫را‬ ‫یک‬ ‫یا‬ ‫و‬ ‫صفر‬ ‫تواند‬ ‫می‬ ‫میکرو‬ ‫هر‬ ، ‫نمائیم‬ ‫متصل‬ ‫یکدیگر‬ ‫به‬ ‫بخواهیم‬ ‫را‬ ‫میکرو‬ ‫دو‬ ‫کنید‬ ‫فرض‬ ‫حا‬‫لت‬PullDown‫حالت‬ ‫از‬ ‫از‬ ‫اگر‬ ‫و‬ ‫صفرها‬ ، ‫نمائیم‬ ‫استفاده‬PullUp‫خواهند‬ ‫تشخیص‬ ‫غیرقابل‬ ‫ها‬ ‫یک‬ ‫نمائیم‬ ‫استفاده‬ ‫پین‬ ‫که‬ ‫وقتی‬ ، ‫بود‬Open Collector‫(کلکتوربا‬‫توانند‬ ‫می‬ ‫میکروها‬ ، ‫باشد‬ )‫ز‬. ‫باشند‬ ‫ارتباط‬ ‫در‬ ‫بایکدیگر‬ ‫بدرستی‬
  • 32. 32 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫میکرو‬ ‫داخلی‬ ‫واحدهای‬ ‫با‬ ‫کار‬ ‫میکرو‬ ‫داخلی‬ ‫واحدهای‬‫در‬‫دیاگرام‬ ‫بالک‬‫صفحه‬06‫واحد‬ ‫آن‬ ‫های‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫همراه‬ ‫به‬. ‫است‬ ‫مشاهده‬ ‫قابل‬ ، ‫برای‬‫ب‬ ‫واحد‬ ‫هر‬ ‫از‬ ‫استفاده‬‫عملکرد‬ ‫چه‬ ‫واحد‬ ‫آن‬ ‫که‬ ‫بدانیم‬ ‫اید‬‫واحد‬ ‫آن‬ ‫به‬ ‫رجیسترهایی‬ ‫چه‬ ‫و‬ ‫دارد‬ ‫هایی‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫چه‬ ‫و‬ ‫شده‬ ‫داده‬ ‫اختصاص‬‫باید‬ ‫را‬ ‫واحد‬ ‫آن‬ ‫سازی‬ ‫فعال‬ ‫نحوه‬ ‫همچنین‬ ‫و‬ ‫است‬. ‫بدانیم‬ : ‫نیازمندیم‬ ‫زیر‬ ‫جدول‬ ‫در‬ ‫شده‬ ‫ذکر‬ ‫رجیسترهای‬ ‫همچنین‬ ‫و‬ ‫واحد‬ ‫آن‬ ‫مخصوص‬ ‫رجیسترهای‬ ‫به‬ ‫واحد‬ ‫هر‬ ‫کنترل‬ ‫برای‬ ، ‫میکرو‬ ‫انداز‬ ‫راه‬ ‫کالک‬ ‫تنظیمات‬ ‫جهت‬ ‫رجیسترها‬ ‫این‬( ‫تغذیه‬ ‫تنظیمات‬ ‫و‬ ‫داخلی‬ ‫واحدهای‬ ‫کالک‬Power‫واحدهای‬ ‫و‬ ‫میکرو‬ ) ‫به‬ ‫نیازی‬ ‫که‬ ، ‫باشند‬ ‫می‬ ... ‫و‬ ‫داخلی‬، ‫پروژه‬ ‫انجام‬ ‫برای‬ ‫نیاز‬ ‫صورت‬ ‫در‬ ‫و‬ ، ‫باشد‬ ‫نمی‬ ‫ها‬ ‫آزمایش‬ ‫انجام‬ ‫برای‬ ‫آنها‬ ‫دانستن‬ . ‫باشد‬ ‫می‬ ‫دانشجو‬ ‫خود‬ ‫عهده‬ ‫بر‬ ‫آن‬ ‫کامل‬ ‫یادگیری‬
  • 33. 33 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫میکرو‬ ‫های‬ ‫پایه‬ ‫نقش‬ ، ‫میکرو‬ ‫های‬ ‫پایه‬ ‫از‬ ‫برخی‬‫پایه‬ ‫مثال‬ ، ‫بوده‬ ‫منظوره‬ ‫تک‬02‫عنوان‬ ‫به‬ ‫فقط‬ ‫میکرو‬VREF‫ها‬ ‫پایه‬ ‫از‬ ‫بسیاری‬ ‫ولی‬ ، ‫باشد‬ ‫می‬ ‫چن‬ ‫به‬ ‫و‬ ، ‫بوده‬ ‫چندمنظوره‬‫پایه‬ ‫مثال‬ ، ‫بوده‬ ‫متصل‬ ‫میکرو‬ ‫داخلی‬ ‫واحد‬ ‫دین‬98‫عنوان‬ ‫به‬ ‫هم‬ ‫میکرو‬P0,2‫واحد‬ ‫به‬ ‫(مربوط‬ GPIO‫عنوان‬ ‫به‬ ‫هم‬ ‫و‬ )‫صفر‬ ‫پورت‬ ‫از‬ ‫دو‬ ‫پین‬ ،TXD0‫واحد‬ ‫فرستنده‬ ‫(پایه‬UART0)‫م‬‫باشد‬ ‫ی‬. ‫واحد‬ ‫به‬ ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫که‬ ‫را‬ ‫پین‬ ‫یک‬ ، ‫بخواهیم‬ ‫اینکه‬ ‫برای‬ ‫حال‬GPIO‫از‬ ‫نمائیم‬ ‫متصل‬ ‫دیگری‬ ‫واحد‬ ‫به‬ ، ‫بوده‬ ‫متصل‬ ‫رجیستر‬PINSEL‫رجیستر‬ ‫همانند‬ ، ‫نمائیم‬ ‫می‬ ‫استفاده‬PINMODE‫از‬ ‫بیت‬ ‫دو‬ ‫پین‬ ‫هر‬ ‫به‬PINSEL‫است‬ ‫شده‬ ‫داده‬ ‫اختصاص‬ ‫پورت‬ ‫برای‬ ‫و‬ ،x‫پین‬ ‫و‬z‫رجیستر‬ ‫از‬ ‫باید‬PINSEL(2x)‫یا‬PINSEL(2x+1)‫از‬ ‫کمتر‬ ‫پین‬ ‫شماره‬ ‫اگر‬ ، ‫نمائیم‬ ‫استفاده‬06 ‫با‬‫از‬ ، ‫شد‬PINSEL(2x)‫اگربزرگترمساوی‬ ‫و‬06‫از‬ ‫باشد‬PINSEL(2x+1)‫های‬ ‫بیت‬ ‫از‬ ‫همچنین‬ ‫و‬ ‫نموده‬ ‫استفاده‬2(z%16)‫و‬ 2(z%16)+1. ‫نموده‬ ‫استفاده‬ ‫بخواهیم‬ ‫اگر‬ ‫مثال‬P0.2: ‫صفر‬ ‫(پورت‬x=0‫پین‬ ‫و‬2:z=2‫واحد‬ ‫به‬ ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫که‬ ، )GPIO‫واحد‬ ‫به‬ ، ‫بوده‬ ‫متصل‬ UART0‫های‬ ‫بیت‬ ‫مقدار‬ ‫باید‬ ‫کند‬ ‫ایفا‬ ‫را‬ ‫فرستنده‬ ‫پایه‬ ‫نقش‬ ، ‫شود‬ ‫متصل‬4‫و‬5‫از‬PINSEL0. ‫دهیم‬ ‫تغییر‬ ‫را‬ ‫مقادیر‬ ‫ازای‬ ‫به‬ ‫اینکه‬00،01،10‫و‬11‫رجیستر‬ ‫از‬PINSEL‫بوده‬ ‫متصل‬ ‫واحد‬ ‫کدام‬ ‫به‬ ‫آن‬ ‫متناظر‬ ‫پایه‬ ، ‫پین‬ ‫یک‬ ‫به‬ ‫مربوط‬ ‫بوده‬ ‫متفاومت‬ ‫پین‬ ‫هر‬ ‫برای‬ ، ‫کند‬ ‫می‬ ‫ایفا‬ ‫را‬ ‫نقشی‬ ‫چه‬ ‫و‬. PINSEL0‫های‬ ‫پین‬ ، ‫صفر‬ ‫پورت‬ :0‫تا‬15:
  • 34. 34 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ PINSEL1‫های‬ ‫پین‬ ، ‫صفر‬ ‫پورت‬ :16‫تا‬31: PINSEL2‫پورت‬ :1‫های‬ ‫پین‬ ،0‫تا‬15:
  • 35. 35 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ PINSEL3‫پورت‬ :1‫های‬ ‫پین‬ ،16‫تا‬31: PINSEL4‫پورت‬ :2‫های‬ ‫پین‬ ،0‫تا‬15:
  • 36. 36 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ PINSEL5‫پورت‬ :2‫های‬ ‫پین‬ ،16‫تا‬31:‫مربوطه‬ ‫های‬ ‫پین‬ : ‫دسترس‬ ‫غیرقابل‬‫نیز‬‫بوده‬ ‫دسترس‬ ‫غیرقابل‬ PINSEL6‫پورت‬ :3‫های‬ ‫پین‬ ،0‫تا‬15‫بوده‬ ‫دسترس‬ ‫غیرقابل‬ ‫نیز‬ ‫مربوطه‬ ‫های‬ ‫پین‬ : ‫دسترس‬ ‫غیرقابل‬ : PINSEL7‫پورت‬ :3‫های‬ ‫پین‬ ،16‫تا‬31‫های‬ ‫پین‬ ‫فقط‬ :25‫و‬26: ‫بوده‬ ‫استفاده‬ ‫قابل‬ PINSEL8‫پورت‬ :4‫های‬ ‫پین‬ ،0‫تا‬15‫بوده‬ ‫دسترس‬ ‫غیرقابل‬ ‫نیز‬ ‫مربوطه‬ ‫های‬ ‫پین‬ : ‫دسترس‬ ‫غیرقابل‬ : PINSEL9‫پورت‬ :4‫های‬ ‫پین‬ ،16‫تا‬31‫بوده‬ ‫دسترس‬ ‫غیرقابل‬ ‫نیز‬ ‫مربوطه‬ ‫های‬ ‫پین‬ : ‫دسترس‬ ‫غیرقابل‬ : PINSEL10: ‫رجی‬ ‫این‬ ‫از‬ ‫سوم‬ ‫بیت‬ ‫فقط‬‫واسط‬ ‫کنترل‬ ‫برای‬ ‫و‬ ‫دسترس‬ ‫در‬ ‫ستر‬ETM. ‫گیرد‬ ‫می‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ‫ها‬ ‫پین‬ ETM : EmbeddedTrace Module ‫واسط‬ ‫از‬ETM‫هسته‬ ‫با‬ ‫مستقیم‬ ‫ارتباط‬ ‫برای‬ARM. ‫شود‬ ‫می‬ ‫استفاده‬ ‫طریق‬ ‫از‬ ، ‫ها‬ ‫روش‬ ‫سایر‬ ‫در‬BUS‫به‬ ‫ها‬ARM‫هسته‬ ‫به‬ ‫مستقیم‬ ‫دسترسی‬ ‫نه‬ ‫و‬ ‫داریم‬ ‫دسترسی‬ARM.
  • 37. 37 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫واحد‬ ‫اندازی‬ ‫راه‬DAC DAC‫یا‬Digital-to Analog Converter‫دی‬ ‫تبدیل‬ ‫برای‬‫زیر‬ ‫های‬ ‫ویژگی‬ ‫دارای‬ ‫و‬ ‫شود‬ ‫می‬ ‫استفاده‬ ‫آنالوگ‬ ‫به‬ ‫جیتال‬ ‫است‬: 0.‫مبدل‬01‫دقت‬ ‫حداکثر‬ : ‫آنالوگ‬ ‫به‬ ‫دیجیتال‬ ، ‫بیت‬01‫است‬ ‫بیت‬ 2.‫مقاومتی‬ ‫رشته‬ ‫معماری‬ ‫دارای‬ 3.‫توان‬ ‫کاهش‬ ‫حالت‬ ‫دارای‬ 4.‫تغذیه‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫سرعت‬ ‫کنترل‬ ‫و‬ ‫تنظیم‬ ‫به‬ ، ‫خواهیم‬ ‫می‬ ‫واقع‬ ‫در‬‫مخت‬ ‫ولتاژهای‬ ، ‫میکرو‬ ‫از‬ ‫ای‬ ‫پایه‬‫واحد‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ ، ‫نمائیم‬ ‫اعمال‬ ‫را‬ ‫لفی‬GPIO ‫مقدار‬ ‫ولی‬ ، ‫داد‬ ‫مقدار‬ ‫ها‬ ‫پایه‬ ‫به‬ ‫شود‬ ‫می‬ ‫هم‬‫منطقی‬ ‫یک‬ ‫و‬ ‫صفر‬ ‫به‬ ‫محدود‬ ‫آن‬‫باشد‬ ‫می‬. ‫واحد‬ ‫عملکرد‬ ، ‫زیر‬ ‫جدول‬ ‫در‬DAC: ‫است‬ ‫مشاهده‬ ‫قابل‬ AOUT‫واحد‬ ‫خروجی‬ :DAC‫شماره‬ ‫پایه‬ ‫که‬ ‫بوده‬6‫و‬ ‫میکرو‬ ‫از‬P0.26. ‫باشد‬ ‫می‬ ‫واحد‬ ‫خروجی‬ ‫اینکه‬ ‫برای‬DAC‫پایه‬ ‫روی‬ ‫را‬6‫به‬ ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫که‬ ‫را‬ ‫پایه‬ ‫این‬ ‫باید‬ ، ‫باشیم‬ ‫داشته‬ ‫میکرو‬GPIO‫متصل‬ ‫پین‬ ( ‫بوده‬26‫واحد‬ ‫به‬ ‫را‬ ) ‫صفر‬ ‫پورت‬ ‫از‬DAC‫های‬ ‫بیت‬ ‫باید‬ ‫پس‬ ، ‫نمائیم‬ ‫متصل‬21‫و‬20‫از‬PINSEL1‫تغییر‬ ‫را‬‫بر‬ ‫و‬ ‫دهیم‬ ‫صفحه‬ ‫جدول‬ ‫اساس‬34‫ها‬ ‫بیت‬ ‫این‬ ‫مقدار‬ ‫باید‬“10”: ‫نویسیم‬ ‫می‬ ‫کدمان‬ ‫داخل‬ ‫پس‬ ، ‫شود‬ PINSEL1 |= (1 << 21) ; // 0x200000 : ‫با‬ ‫است‬ ‫برابر‬ ‫خروجی‬ ‫ولتاز‬ ‫مقدار‬ AOUT = ‫خروجی‬ = Value 1024 ∗ Vref VREF‫پایه‬ ‫و‬ ‫دارد‬ ‫خروجی‬ ‫مقدار‬ ‫در‬ ‫تاثیر‬ ‫که‬ ، ‫واحد‬ ‫مرجع‬ ‫ولتاژ‬ :12‫دیگری‬ ‫نقش‬ ‫پایه‬ ‫این‬ ‫چون‬ ‫و‬ ‫بوده‬ ‫میکرو‬ ‫تغییر‬ ‫به‬ ‫نیاز‬ ، ‫کند‬ ‫نمی‬ ‫ایفا‬ ‫را‬PINSEL‫و‬ ‫ندارد‬PINSEL. ‫ندارد‬ ‫کاربردی‬ ‫آن‬ ‫برای‬ DDAV‫ولتاژ‬ :3.3. ‫شود‬ ‫می‬ ‫استفاده‬ ‫واحد‬ ‫این‬ ‫تغذیه‬ ‫برای‬ ‫که‬
  • 38. 38 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ SSAV:. ‫واحد‬ ‫این‬ ‫گراند‬ ‫عنوان‬ ‫به‬ DDAV‫و‬SSAV. ‫باشند‬ ‫داشته‬ ‫را‬ ‫خطا‬ ‫و‬ ‫نویز‬ ‫حداقل‬ ‫باید‬ ، ‫شود‬ ‫می‬ ‫استفاده‬ ‫واحد‬ ‫این‬ ‫تغذیه‬ ‫برای‬ ‫که‬ . ‫بوده‬ ‫نویز‬ ‫رساندن‬ ‫حداقل‬ ‫به‬ ‫برای‬ ، ‫پروگرامر‬ ‫مدار‬ ‫در‬ ‫خازن‬ ‫از‬ ‫استفاده‬ ‫دالیل‬ ‫از‬ ‫یکی‬ ‫رجیستر‬DACR: ‫واحد‬ ‫کنترل‬ ‫جهت‬ ‫رجیستر‬ ‫این‬DAC. ‫باشد‬ ‫می‬ ‫های‬ ‫بیت‬6‫تا‬05‫که‬ ‫رجیستر‬ ‫این‬01‫همان‬ ، ‫بوده‬Value‫مقدار‬ ، ‫بخواهیم‬ ‫اگر‬ ‫مثال‬ ، ‫دارد‬ ‫تاثیر‬ ‫خروجی‬ ‫میزان‬ ‫در‬ ‫که‬ ‫است‬ Value‫برابر‬500: ‫نویسیم‬ ‫می‬ ‫باشد‬ DACR = 500 << 6 ; ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬Value‫باید‬10‫بین‬ ‫مقدارش‬ ‫عبارتی‬ ‫به‬ ‫یا‬ ‫و‬ ، ‫بیتی‬0‫تا‬1023. ‫باشد‬ ‫بیت‬16‫ام‬‫رجیستر‬ ،DACR. ‫باشد‬ ‫می‬ ‫خروجی‬ ‫جریان‬ ‫حداکثر‬ ‫و‬ ‫واحد‬ ‫سرعت‬ ‫حداکثر‬ ‫تنظیم‬ ‫جهت‬ : ‫کد‬ ‫نمونه‬ #include "LPC23xx.h" #include "delay.h" int main (void) { unsigned long value = 0; PINSEL1 = 0x200000;/* set p0.26 to DAC output */ while ( 1 ) { for(value = 500 ; value < 1024 ; value++) { DACR = (value << 6); delay_ms(20); } } }
  • 39. 39 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫واحد‬ADC ‫واحد‬ ‫از‬ADC‫اس‬ ‫دیجیتال‬ ‫به‬ ‫آنالوگ‬ ‫تبدیل‬ ‫جهت‬: ‫است‬ ‫زیر‬ ‫های‬ ‫ویژگی‬ ‫دارای‬ ‫و‬ ، ‫شود‬ ‫می‬ ‫تفاده‬ 0.‫معادل‬ ‫تبدیل‬ ‫دقت‬01‫بیت‬ 2.‫روی‬ ‫شده‬ ‫پلکس‬ ‫مالتی‬ ‫ورودی‬6‫پین‬ 3.‫توان‬ ‫کاهش‬ ‫حالت‬ ‫دارای‬ 4.‫تا‬ ‫صفر‬ ‫بین‬ ‫گیری‬ ‫اندازه‬ ‫محدوده‬3v 5.‫تبدیل‬ ‫زمان‬ ‫حداقل‬01‫بیت‬2.44 us‫بوده‬ ‫واحد‬ ‫وسیله‬ ‫به‬DAC‫می‬ )‫مشخص‬ ‫(ولتاژی‬ ‫آنالوگ‬ ‫مقداری‬ ‫پایه‬ ‫یک‬ ‫به‬‫واحد‬ ‫توسط‬ ‫و‬ ، ‫دادیم‬ADC‫یک‬ ‫توانیم‬ ‫می‬‫ورودی‬ ‫ولتاژ‬ ‫(سطح‬ ‫آنالوگ‬‫مشخص‬ ‫ی‬. ‫بخوانیم‬ ‫را‬ ) : ‫ها‬ ‫پین‬ ‫در‬Lpc 2368‫داری‬ ‫که‬6‫کانال‬ADC‫واحد‬ ‫های‬ ‫ورودی‬ ‫زیر‬ ‫های‬ ‫پین‬ ، ‫است‬ADC: ‫هستند‬ ‫مقدار‬PINSEL‫رجیستر‬PINSEL‫مربوطه‬‫پورت‬ ‫و‬ ‫پین‬‫پایه‬ ‫شماره‬‫پین‬ ‫عنوان‬‫واحد‬ ‫ورودی‬ADC 01PINSEL1[15:14]P0.239AD00ADC 0 01PINSEL1[17:16]P0.248AD01ADC 1 01PINSEL1[19:18]P0.257AD02ADC 2 01PINSEL1[21:20]P0.266AD03ADC 3 11PINSEL3[29:28]P1.3021AD04ADC 4 11PINSEL3[31:30]P1.3120AD05ADC 5 VREF‫پایه‬ ‫همان‬ ‫که‬ ،02‫تغییر‬ ‫به‬ ‫نیازی‬ ‫و‬ ، ‫بوده‬ ‫مرجع‬ ‫ولتاژ‬ ‫عنوان‬ ‫به‬ ، ‫است‬ ‫میکرو‬PINSEL‫منظوره‬ ‫تک‬ ‫ای‬ ‫(پایه‬ ‫ندارد‬ ‫هم‬ ) ‫است‬
  • 40. 41 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ DDAV‫و‬SSAV‫واحد‬ ‫تغذیه‬ ‫عنوان‬ ‫به‬ADC. ‫است‬ ‫رجیسترها‬:
  • 41. 41 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫رجیستر‬AD0CR: ‫کانال‬ ‫انتخاب‬ ‫برای‬ ‫رجیستر‬ ‫این‬ADC‫خود‬ ‫برنامه‬ ‫ابتدای‬ ‫در‬ ‫باید‬ ‫و‬ ، ‫است‬ ‫واحد‬ ‫این‬ ‫مدکاری‬ ‫و‬‫واحد‬ ‫از‬ ‫استفاده‬ ‫از‬ ‫(قبل‬ADC) ‫پی‬ ‫را‬ ‫رجیستر‬ ‫این‬‫نمو‬ ‫کربندی‬: ‫د‬
  • 42. 42 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫رجیستر‬AD0GDR: ‫به‬ ‫آنالوگ‬ ‫مقدار‬ ‫اینکه‬ ‫از‬ ‫پس‬‫در‬ ‫خودکار‬ ‫صورت‬ ‫به‬ ‫سپس‬ ‫و‬ ‫رجیستر‬ ‫این‬ ‫در‬ )‫(نتیجه‬ ‫دیجیتال‬ ‫مقدار‬ ، ‫شد‬ ‫تبدیل‬ ‫دیجیتال‬ . ‫گردد‬ ‫می‬ ‫ذخیره‬ ‫شده‬ ‫تنظیم‬ ‫کانال‬ ‫با‬ ‫متناظر‬ ‫رجیستر‬ ‫رجیستر‬AD0STAT: ‫های‬ ‫کانال‬ ‫تمام‬ ‫وضعیت‬ ‫بررسی‬ ‫امکان‬ ‫و‬ ‫اجازه‬ ‫رجیستر‬ ‫این‬ADC. ‫دهد‬ ‫می‬ ‫ما‬ ‫به‬ ‫را‬ ‫وضعیت‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫بیت‬ ‫رجیستر‬ ‫این‬ ‫در‬DONE‫و‬OVERRUN‫واحد‬ ‫وقفه‬ ‫پرچم‬ ‫به‬ ‫مربوط‬ ‫بیت‬ ‫همچنین‬ ‫و‬ ‫کانال‬ ‫هر‬ ADC‫که‬OR‫بیت‬ ،DONE‫تما‬. ‫دارد‬ ‫وجود‬ ، ‫باشد‬ ‫می‬ ‫ها‬ ‫کانال‬ ‫م‬
  • 43. 43 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫رجیستر‬AD0INTEN: ‫این‬‫های‬ ‫کانال‬ ‫وقفه‬ ‫کنترل‬ ‫اجازه‬ ‫ما‬ ‫به‬ ‫رجیستر‬ADC‫یک‬ ‫کانال‬ ‫هر‬ ‫دیجیتال‬ ‫به‬ ‫آنالوگ‬ ‫تبدیل‬ ‫اتمام‬ ‫از‬ ‫پس‬ ‫تا‬ ، ‫دهد‬ ‫می‬ ‫را‬ . ‫دهد‬ ‫رخ‬ ‫وقفه‬ ‫رجیستر‬‫های‬AD0DR(0:5): ‫کانال‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫رجیستر‬ ‫این‬ ‫از‬ ‫کدام‬ ‫هر‬ADC(0:5): ‫بوده‬
  • 44. 44 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ : ‫کد‬ ‫نمونه‬)‫نمائید‬ ‫بررسی‬ ‫را‬ ‫(کد‬ #include "LPC23xx.h" #define led1 0x1 #define set_led1 (FIO0SET=led1) #define clr_led1 (FIO0CLR=led1) void ADC0Handler (void) __irq { unsigned long stat_backup; unsigned long value; stat_backup = AD0STAT & 0x000000FF; if (stat_backup==1){ //channel 0 is ready value = ( AD0DR0 >> 6 ) & 0x3FF; //you code is here for save converted data if (value>500) set_led1; else clr_led1; } AD0STAT=0; AD0GDR=0; VICVectAddr = 0; AD0CR|=0x00200301; AD0CR|=0x01000000; } int main(void){ SCS |=0x00000001; FIO0MASK=0x00000000; FIO0DIR=led1; FIO0CLR=led1; PINMODE0 = (1 << 2) | (1 << 3); PINSEL1|=0x4000; AD0CR=0x00200301; AD0CR|=0x01000000; VICIntSelect=0x00000000; VICIntEnable=(1<<18); //set ADC0 to IRQ VICVectAddr18=(unsigned long)ADC0Handler; AD0INTEN=257; clr_led1; while(1); }
  • 45. 45 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫واحد‬UART (0,2,3) ‫واحد‬ ‫از‬UART، ‫نمائیم‬ ‫می‬ ‫استفاده‬ ‫سریال‬ ‫ارتباط‬ ‫جهت‬‫توان‬ ‫می‬ ‫واحد‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫با‬‫میکر‬ ‫یک‬ ‫به‬ ‫را‬ ‫میکرو‬‫ی‬ ‫و‬ ‫دیگر‬ ‫و‬‫ا‬ : ‫است‬ ‫زیر‬ ‫های‬ ‫ویژگی‬ ‫دارای‬ ‫که‬ ، ‫نمود‬ ‫متصل‬ ‫کامپیوتر‬ 0.06‫رجیستر‬ ‫بایت‬FIFO(Firt in First Out)‫دریافت‬ ‫و‬ ‫ارسال‬ ‫برای‬ 2.‫خودکار‬ ‫تنظیم‬ ‫قابلیت‬Baud) ‫داده‬ ‫انتقال‬ ‫نرخ‬ ( 3.UART3‫مد‬ ‫از‬ ‫پشتیبانی‬ ‫امکان‬IrDA‫است‬ ‫قرمز‬ ‫مادون‬ ‫ارتباط‬ ‫برای‬ : ‫ها‬ ‫پین‬ ‫مقدار‬PINSEL‫رجیستر‬PINSEL‫مربوطه‬‫پورت‬ ‫و‬ ‫پین‬‫پایه‬ 01PINSEL0[7:6]P0.399RXD0 ‫گیرنده‬ UART0 01PINSEL0[5:4]P0.298TXD0 ‫فرستنده‬ 01PINSEL0[23:22]P0.1149RXD2 ‫گیرنده‬ UART2 01PINSEL0[21:20]P0.1048TXD2 ‫فرستنده‬ 10PINSEL0[3:2]P0.147RXD3 ‫گیرنده‬ UART3 10PINSEL0[1:0]P0.046TXD3 ‫فرستنده‬
  • 46. 46 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ : ‫ها‬ ‫رجیستر‬
  • 47. 47 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫رجیستر‬‫های‬U(0,2,3)RBR: ‫رجیستر‬‫های‬U(0,2,3)THR: ‫رجیستر‬‫های‬U(0,2,3)DLL‫و‬U(0,2,3)DLM: ‫رجیستر‬‫های‬U(0,2,3)IER:
  • 48. 48 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫رجیستر‬‫های‬U(0,2,3)IIR:
  • 49. 49 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ UARTn Interupt Handling:
  • 50. 51 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫رجیستر‬‫های‬U(0,2,3)FCR: ‫رجیستر‬‫های‬U(0,2,3)LCR:
  • 51. 51 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫رجیستر‬‫های‬U(0,2,3)LSR:
  • 52. 52 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬
  • 53. 53 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫رجیستر‬‫های‬U(0,2,3)SCR: ‫رجیستر‬‫های‬U(0,2,3)ACR:
  • 54. 54 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫رجیستر‬U3ICR: IrDA Pulse Width: ‫رجیستر‬‫های‬U(0,2,3)FDR:
  • 55. 55 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ Fractional Divider setting look-up table: ‫رجیستر‬‫های‬U(0,2,3)TER:
  • 56. 56 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫با‬ ( : ‫نمونه‬ ‫کد‬BaudRate،19200) #include "LPC23xx.h" #include "string.h" #define RDR 1 #define OE 2 #define PE 4 #define FE 8 #define BRI 16 #define THRE 32 #define TEMT 64 #define RXFE 128 void sendline (unsigned char *BufferPtr, unsigned long length); void getline (unsigned char *BufferPtr, unsigned long length, unsigned char sens_word); unsigned char getchar (void); void putchar (unsigned char cin); int main (){ char *strin="In The Name Of Allah"; char *strin1; PINSEL0=0x50; //set p0.2 and p0.3 to TXD0 and RXD0 U0LCR=0x83; //set frmae=8n1 and DLAB=1 U0DLL=0x34; //baud rate=19200bps @12MHz crystal, 32MHz cclk,16MHz Pclk U0DLM=0x0; //baud rate=19200bps @12MHz crystal, 32MHz cclk,16MHz Pclk U0LCR=0x03; //DLAB=1 U0FCR=0x07; // enable RX fifo and TX fifo sendline((unsigned char *)strin,strlen((const char *)strin)); while(1){ strin="type your text:"; sendline ((unsigned char *)strin,strlen((const char *)strin)); getline((unsigned char *)strin1,0x00000032,0x0D); strin="your text is:"; sendline((unsigned char *)strin,strlen((const char *)strin)); sendline((unsigned char *)strin1,strlen((const char *)strin1)); } }
  • 57. 57 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ void sendline (unsigned char *BufferPtr, unsigned long length){ unsigned long len; for (len=0;len<length;len++){ putchar(*BufferPtr); BufferPtr++; } putchar(0x0D); putchar(0x0A); } void getline (unsigned char *BufferPtr, unsigned long length, unsigned char sens_word){ unsigned long len; unsigned char in; for (len=0;len<length;len++){ in=getchar(); if (in==sens_word) { *BufferPtr=0x0; break;} *BufferPtr=in; BufferPtr++; } } unsigned char getchar (void){ while(!(U0LSR & RDR)); return (U0RBR); } void putchar (unsigned char cin){ while(!(U0LSR & THRE)); U0THR=cin; }
  • 58. 58 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ ‫میکرو‬ ‫با‬ ‫سریال‬ ‫ارتباط‬ ‫برای‬ ‫شارپ‬ ‫سی‬ ‫در‬ ‫سریال‬ ‫پورت‬ ‫برنامه‬ ‫که‬ ‫است‬ ‫کافی‬ ‫سریال‬ ‫پورت‬ ‫طریق‬ ‫از‬ ‫کامپیوتر‬ ‫و‬ ‫میکرو‬ ‫ارتباط‬ ‫جهت‬UART 0‫سپس‬ ‫و‬ ‫نمائید‬ ‫پروگرام‬ ‫میکرو‬ ‫روی‬ ‫را‬ ‫پایه‬ ( ‫نمائید‬ ‫خارج‬ ‫پروگرام‬ ‫حالت‬ ‫از‬ ‫را‬ ‫میکرو‬53‫قطع‬ ‫را‬ ‫اتصال‬ ‫این‬ ، ‫باشد‬ ‫متصل‬ ‫زمین‬ ‫به‬ ‫باید‬ ‫کردن‬ ‫پروگرام‬ ‫هنگام‬ ‫به‬ ‫که‬ ‫نمائید‬‫اتصال‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ ‫؛‬‫های‬ ‫پایه‬RST،Rx‫و‬Tx‫و‬ ‫میکرو‬ ‫بین‬Mini Lpc Programmer) ‫شود‬ ‫قطع‬ ‫نباید‬ . ‫نماید‬ ‫ارسال‬ ‫و‬ ‫دریافت‬ ‫را‬ ‫اطالعات‬ ‫بتواند‬ ‫تا‬ ‫داریم‬ ‫نیاز‬ ‫کامپیوتر‬ ‫روی‬ ‫برنامه‬ ‫یک‬ ‫به‬ ‫حال‬ ‫پوشه‬ ‫داخل‬SerialPort. ‫دارد‬ ‫وجود‬ ‫سریال‬ ‫ارتباط‬ ‫جهت‬ ‫شارپ‬ ‫سی‬ ‫پروژه‬ ‫را‬ ‫پروژه‬ ‫ابتدا‬‫توسط‬Visual Studio‫گزینه‬ ‫روی‬ ‫سپس‬ ‫و‬ ‫نمائید‬ ‫باز‬‫داخل‬ ‫از‬Solution Explorer ‫گزینه‬ ‫سپس‬ ‫و‬ ‫کلیک‬ ‫راست‬‫باز‬ ‫را‬ ‫فرم‬ ‫که‬ ‫است‬ ‫این‬ ‫دیگر‬ ‫راه‬ ، ‫نمائید‬ ‫انتخاب‬ ‫را‬ ‫یا‬ ‫و‬ ‫نموده‬ ‫انتخاب‬ ‫را‬ ‫گزینه‬ ‫همین‬ ‫سپس‬ ‫و‬ ‫کلیک‬ ‫راست‬ ‫سپس‬ ‫و‬ ‫نموده‬F7. ‫دهید‬ ‫فشار‬ ‫را‬ : ‫بوده‬ ‫مشاهده‬ ‫قابل‬ ‫زیر‬ ‫متد‬ ‫دو‬ public void WritedE(object sender , EventArgs e) { PortEventArgs er =(PortEventArgs)e; MessageBox.Show(er.Msg); } public void ReadE(object sender, EventArgs e) { PortEventArgs er = (PortEventArgs)e; MessageBox.Show(er.Msg); } ‫متد‬ ‫شود‬ ‫ارسال‬ ‫برنامه‬ ‫در‬ ‫سریال‬ ‫پورت‬ ‫طریق‬ ‫از‬ ‫اطالعاتی‬ ‫که‬ ‫زمانی‬WritedE‫از‬ ‫را‬ ‫اطالعاتی‬ ‫برنامه‬ ‫زمانی‬ ‫همچنین‬ ‫و‬ ‫شده‬ ‫اجرا‬ ‫متد‬ ‫نماید‬ ‫دریافت‬ ‫پورت‬ ‫طریق‬ReadE. ‫شود‬ ‫می‬ ‫اجرا‬ ‫متد‬ ‫دو‬ ‫هر‬ ‫داخل‬er.Msg، ‫باشد‬ ‫داشته‬ ‫درستی‬ ‫آن‬ ‫به‬ ‫راحتی‬ ‫به‬ ‫توانید‬ ‫می‬ ‫که‬ ، ‫است‬ ‫شده‬ ‫دریافت‬ ‫یا‬ ‫ارسال‬ ‫اطالعات‬ ‫حاوی‬ ‫توانید‬ ‫می‬ ‫خود‬ ‫پروژه‬ ‫در‬ ‫نیاز‬ ‫صورت‬ ‫در‬ ‫حال‬er.Msg. ‫شود‬ ‫انجام‬ ‫نظرتان‬ ‫مورد‬ ‫عملیات‬ ‫تا‬ ‫نموده‬ ‫بررسی‬ ‫یا‬ ‫و‬ ‫پردازش‬ ‫را‬ ‫کام‬ ‫روی‬ ‫که‬ ‫پورتی‬ ‫باید‬ ‫برنامه‬ ‫اجرای‬ ‫از‬ ‫بعد‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬‫به‬ ‫پیوتر‬Mini Lpc Prog‫را‬ ‫است‬ ‫شده‬ ‫داده‬ ‫اختصاص‬ ‫و‬ ‫انتخاب‬Baud Rate‫میکند‬ ‫کار‬ ‫آن‬ ‫با‬ ‫میکرو‬ ‫که‬ ‫مقداری‬ ‫را‬‫برنامه‬ ‫اساس‬ ‫(بر‬UART)‫سپس‬ ‫و‬ ‫دهید‬ ‫قرار‬Port‫را‬Open . ‫نمائید‬
  • 59. 59 amjadima.ir amjadima@gmail.com ‫ریزپردازنده‬ ‫آزمایشگاه‬1–‫امجدی‬ ‫امین‬ ‫ّد‬‫م‬‫مح‬ LCD‫گرافیکی‬ ‫برای‬‫اندازی‬ ‫راه‬ ‫و‬ ‫تغذیه‬LCD‫های‬ ‫پایه‬ ‫باید‬ ، ‫گرافیکی‬Vdd‫و‬LEDA‫به‬ ‫مربوط‬ ،LCD‫به‬ ‫را‬‫ولتاژ‬3.3‫پایه‬ ‫و‬ ، ‫ولت‬Gnd‫را‬ ‫به‬‫(پایه‬ . ‫نمود‬ ‫وصل‬ ‫گراند‬LEDA‫صفحه‬ ‫نور‬ ‫شدن‬ ‫روشن‬ ‫جهت‬LCD)‫باشد‬ ‫می‬ LCD‫دارای‬ ‫گرافیکی‬06‫(معادل‬ ‫بیت‬06)‫پایه‬‫داده‬ ‫خط‬‫و‬5‫(معادل‬ ‫بیت‬5)‫پایه‬‫باشد‬ ‫می‬ ‫کنترلی‬ ‫خط‬‫میکرو‬ ‫به‬ ‫باید‬ ‫که‬ . ‫شوند‬ ‫متصل‬ ‫برای‬ ‫ها‬ ‫پایه‬ ‫ترین‬ ‫مناسب‬06، ‫دیتا‬ ‫خطوط‬ ‫بیت‬‫با‬ ‫متناظر‬ ‫های‬ ‫پایه‬‫های‬ ‫پین‬06‫تا‬30‫در‬ ‫همگی‬ ‫که‬ ‫باشند‬ ‫می‬ ‫یک‬ ‫پورت‬ ‫از‬ . ‫هستند‬ ‫دسترس‬ ‫قرار‬ ‫اختیارتان‬ ‫در‬ ‫که‬ ‫(کدی‬‫به‬ ‫دیتا‬ ‫خط‬ ‫برای‬ ، ‫است‬ ‫شده‬ ‫داده‬06‫میکرو‬ ‫در‬ ‫که‬ ‫داریم‬ ‫نیاز‬ ‫سرهم‬ ‫پشت‬ ‫پین‬Lpc 2368‫مناسب‬ ‫های‬ ‫پین‬ ، ‫ها‬ ‫پین‬ ‫ترین‬06‫تا‬30‫مد‬ ‫تغییر‬ ‫با‬ ‫توان‬ ‫می‬ ‫ولی‬ ، ‫هستند‬ ‫دسترس‬ ‫در‬ ‫که‬ ‫بوده‬ ‫یک‬ ‫پورت‬LCD‫از‬ ، ‫کدها‬ ‫تغییر‬ ‫و‬ ‫جای‬ ‫به‬ ‫یا‬ ‫و‬ ‫سرهم‬ ‫پشت‬ ‫غیر‬ ‫های‬ ‫پین‬06‫از‬ ‫بیت‬8)‫نمود‬ ‫استفاده‬ ‫دیتا‬ ‫خط‬ ‫بیت‬ ‫فایل‬ ‫در‬tftlcd_functions.h‫به‬‫خطوط‬31‫و‬30: ‫نمائید‬ ‫توجه‬ #define TFTLCD_DATAPORT_1 #define TFTLCD_DATAPORT_OFFSET 16 TFTLCD_DATAPORT_1،. ‫است‬ ‫شده‬ ‫متصل‬ ‫یک‬ ‫پورت‬ ‫به‬ ‫دیتا‬ ‫خط‬ ‫که‬ ‫معناست‬ ‫بدان‬ TFTLCD_DATAPORT_OFFSET 16‫پین‬ ‫از‬ ‫دیتا‬ ‫خطوط‬ ‫به‬ ‫مربوط‬ ‫های‬ ‫پین‬ ‫که‬ ‫معناست‬ ‫بدان‬ ،06. ‫شوند‬ ‫می‬ ‫شروع‬ ‫برای‬5‫با‬ ‫متناسب‬ ‫توان‬ ‫می‬ ‫کنترلی‬ ‫بیت‬‫گرفت‬ ‫نظر‬ ‫در‬ ‫بیت‬ ‫هر‬ ‫برای‬ ‫را‬ ‫دلخواهی‬ ‫های‬ ‫پایه‬ ، ‫میکرو‬ ‫به‬ ‫متصل‬ ‫قطعات‬ ‫سایر‬ ‫و‬ ‫مدار‬ . ‫باشند‬ ‫یکسانی‬ ‫پورت‬ ‫از‬ ‫باید‬ ‫متناظرشان‬ ‫پین‬ ، ‫ها‬ ‫پایه‬ ‫تمامی‬ ‫البته‬ ،)‫برد‬ ‫بین‬ ‫از‬ ‫را‬ ‫وابستگی‬ ‫این‬ ‫کدها‬ ‫تغییر‬ ‫با‬ ‫توان‬ ‫می‬ ( ‫فایل‬ ‫در‬tftlcd_functions.h‫خطوط‬ ‫به‬33‫تا‬38: ‫نمائید‬ ‫توجه‬ #define TFTLCD_CONTROLPORT_1 #define TFTLCD_CS 0 #define TFTLCD_RS 1 #define TFTLCD_WR 4 #define TFTLCD_RD 8 #define TFTLCD_RST 9 ‫های‬ ‫پایه‬ ‫از‬ ‫کدام‬ ‫هر‬ ‫و‬ ‫بشود‬ ‫باید‬ ‫متصل‬ ‫یک‬ ‫پورت‬ ‫به‬ ‫کنترلی‬ ‫خط‬ ، ‫کدها‬ ‫به‬ ‫باتوجه‬Cs،Rs،WR،RD،RST‫ترتیب‬ ‫به‬ ‫های‬ ‫پین‬ ‫به‬1،0،4،8‫و‬9. ‫اند‬ ‫متصل‬