اطلاعیه

Collapse
No announcement yet.

سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید

    سلام بچه ها من برنامه یه کی پد نوشتم و از وقفه تغییر پورت B استفاده میکنه اقایون وارد وقفه میشه ولی خارج نمیشه
    در حالی که ADCON1 و RBIF=0 رو انجام دادم ایا رجیستور خاصی هست که باید تنظیم کنم؟
    و همچنین میخوام LCD رو از B به D تغییر بدم کتابخونش رو Bها رو تبدیل کردم به D ولی تغییر نمیکنه مشکلش چیه؟
    و همچنین اگه بشه برنامه اندازه گیری عرض پالس قرار بدید؟
    اقای صالحی و اقای سید جعفری خواهش میکنم جواب بدید واقعیتش مربیم میکرو بلد نیست.

    #2
    پاسخ : سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید

    سلام دوست من
    بدون کدت نمیشه عیب برنامتو در اورد حداقل کدتون رو بذارید تا کسی که کار کرده بتونه عیب کارو بهتون بگه
    جواب بعضي حرفا فقط يه نفس عميقه ، بذار تو دلت بمونه...

    دیدگاه


      #3
      پاسخ : سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید

      سلام بچه ها خواهش میکنم کمک کنید اگه بشه یه برنامه کی پد که خودتون نوشتید رو بذارید ممنونتون میشم. :cry2:

      دیدگاه


        #4
        پاسخ : سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید

        سلام
        میخوام LCD رو از B به D تغییر بدم کتابخونش رو Bها رو تبدیل کردم به D ولی تغییر نمیکنه مشکلش چیه؟
        بعد تغییرات تو هدر ال سی دی باید سورس های اونو به پروژت اضافه کنی وگرنه تاثیر نداره
        برای کیپد هم چیز خاصی نداره ماتریسیه سطر ها رو مقدار بده ستون ها رو بخون
        اگه باز نتونستی کدتو بذار که اصلاح کنیم
        جواب بعضي حرفا فقط يه نفس عميقه ، بذار تو دلت بمونه...

        دیدگاه


          #5
          پاسخ : سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید

          یه مثال


          کد:
          #include <p18f452.h>
          #include <delays.h>
          
          /* Set up the configuration bits */
          #pragma config OSC 		= HS, OSCS = OFF
          #pragma config PWRT 	= OFF
          #pragma config BOR 		= OFF
          #pragma config WDT 		= OFF
          #pragma config CCP2MUX 	= OFF
          #pragma config LVP 		= OFF
          
          #define	ROW1 	LATBbits.LATB0
          #define ROW2 	LATBbits.LATB1	
          #define ROW3 	LATBbits.LATB2
          #define ROW4 	LATBbits.LATB3
          #define LED_R 	LATEbits.LATE0
          #define LED_G 	LATEbits.LATE1
          #define LED_B 	LATEbits.LATE2
          
          #define putLCD(d) 		LCDwrite(LCDdata, (d))
          #define LCDcmd(c) 		LCDwrite(LCDCMD, (c))
          #define LCDhome() 		LCDwrite(LCDCMD, 2)
          #define LCDclr() 		LCDwrite(LCDCMD, 1)
          #define LCDbusy() 		LCDread(LCDCMD) & 0x80
          #define LCDaddr() 		LCDread(LCDCMD) & 0x7F
          #define getLCD() 		LCDread(LCDDATA)
          #define LCDsetCGRAM(a)	LCDwrite(LCDCMD, (a & 0x3F) | 0x40)
          #define LCDsetDDRAM(a) LCDwrite(LCDCMD, (a & 0x7F) | 0x80)
          
          #define LCDdata 		1 // RS = 1 ; access data register
          #define LCDCMD 			0 // RS = 0 ; access command register
          #define LCDrd 			1 //R/W = 1 ; Read from LCD
          #define LCDwt 			0 //R/W = 0 ; Wriet to LCD
          #define DATA 			LATD
          #define TRIS_DATA		TRISD
          #define TRIS_RS			TRISCbits.TRISC0
          #define TRIS_RW			TRISCbits.TRISC1
          #define TRIS_E			TRISCbits.TRISC2
          #define LAT_RS			LATCbits.LATC0
          #define LAT_RW			LATCbits.LATC1
          #define LAT_E			LATCbits.LATC2
          
          //20MHz XTAL ----> 10,000*200e-9*x/2 = x msec
          //20MHz XTAL ----> 10*200e-9*x/2 = x usec
          #define delay_ms(x) 	Delay10KTCYx(x/2)
          #define delay_us(x) 	Delay10TCYx(x/2)
          
          void LCDwrite_i (unsigned char, char);
          void LCDinit (void);
          char LCDread (unsigned char);
          void LCDwrite (unsigned char, char);
          void putsLCD(rom near char *);
          void RB_isr(void);
          
          rom near char st[] = {"key pressed: "};
          unsigned char COL, i, j, key_result, flag;
          signed char key1, key2;
          unsigned char key[4][4] = {'1', '2', '3', '-',
          						  '4', '5', '6', '*',
          						  '7', '8', '9', '/',
          						  's', '0', '=', '+'};
          
          
          void RB_isr(void);
          
          #pragma code high_vector_section = 0x08
          void high_vector (void)	{
          	_asm GOTO RB_isr _endasm
          }
          #pragma code
          
          #pragma interrupt RB_isr
          void RB_isr (void)	{
          
          	INTCONbits.RBIF = 0;
          	
          		key1 = (PORTB & 0xF0);
          		delay_ms(40);
          		key2 = (PORTB & 0xF0);
          	
          		if (key2 != 0xF0)
          			if (key2 == key1)	{
          				ROW1 = 0; ROW2 = 1; ROW3 = 1; ROW4 = 1;
          				delay_us(100);
          				key2 = (PORTB & 0xF0);
          				if (key2 != 0xF0)	{
          					i = 0;
          					switch (key2)	{
          						case (0x70): /*LED_R = 1; LED_G = 0; LED_B = 0;*/ j = 3; break;
          						case (0xB0): /*LED_R = 0; LED_G = 1; LED_B = 0;*/ j = 2; break;
          						case (0xD0): /*LED_R = 0; LED_G = 0; LED_B = 1;*/ j = 1; break;
          						case (0xE0): /*LED_R = 0; LED_G = 0; LED_B = 0;*/ j = 0; break;
          						default:	 break;
          					}//switch (key2)
          					goto lable;
          				}//if (key2 != 0xF0)
          				ROW1 = 1; ROW2 = 0; ROW3 = 1; ROW4 = 1;
          				delay_us(100);
          				key2 = (PORTB & 0xF0);
          				if (key2 != 0xF0)	{
          					i = 1;
          					switch (key2)	{
          						case (0x70): /*LED_R = 1; LED_G = 0; LED_B = 0;*/ j = 3; break;
          						case (0xB0): /*LED_R = 0; LED_G = 1; LED_B = 0;*/ j = 2; break;
          						case (0xD0): /*LED_R = 0; LED_G = 0; LED_B = 1;*/ j = 1; break;
          						case (0xE0): /*LED_R = 0; LED_G = 0; LED_B = 0;*/ j = 0; break;
          						default:	 break;
          					}//switch (key2)
          					goto lable;
          				}//if (key2 != 0xF0)
          				ROW1 = 1; ROW2 = 1; ROW3 = 0; ROW4 = 1;
          				delay_us(100);
          				key2 = (PORTB & 0xF0);
          				if (key2 != 0xF0)	{
          					i = 2;
          					switch (key2)	{
          						case (0x70): /*LED_R = 1; LED_G = 0; LED_B = 0;*/ j = 3; break;
          						case (0xB0): /*LED_R = 0; LED_G = 1; LED_B = 0;*/ j = 2; break;
          						case (0xD0): /*LED_R = 0; LED_G = 0; LED_B = 1;*/ j = 1; break;
          						case (0xE0): /*LED_R = 0; LED_G = 0; LED_B = 0;*/ j = 0; break;
          						default:	 break;
          					}//switch (key2)
          					goto lable;
          				}//if (key2 != 0xF0)
          				ROW1 = 1; ROW2 = 1; ROW3 = 1; ROW4 = 0;
          				delay_us(100);
          				key2 = (PORTB & 0xF0);
          				if (key2 != 0xF0)	{
          					i = 3;
          					switch (key2)	{
          						case (0x70): /*LED_R = 1; LED_G = 0; LED_B = 0;*/ j = 3; break;
          						case (0xB0): /*LED_R = 0; LED_G = 1; LED_B = 0;*/ j = 2; break;
          						case (0xD0): /*LED_R = 0; LED_G = 0; LED_B = 1;*/ j = 1; break;
          						case (0xE0): /*LED_R = 0; LED_G = 0; LED_B = 0;*/ j = 0; break;
          						default:	 break;
          					}//switch (key2)
          					goto lable;
          				}//if (key2 != 0xF0)
          lable:			key_result = key[i][j];
          				if (key_result == 's')
          					LCDclr();
          				putLCD(key_result);
          			}//if (key2 == key1)
          
          		LATB = 0xF0;
          }
          
          void main (void)	{
          	
          	TRISB = 0xF0;
          	LATB = 0xF0;
          	INTCON2bits.RBPU = 0;
          
          	TRISD = 0x00;
            INTCONbits.GIE = 1;
            INTCONbits.RBIE = 1;
            INTCON2bits.RBIP = 1;
          
          	LCDinit();
          	putsLCD(st);
          	
          	while (1);
          
          //	while (flag)	{
          //		flag = 0;
          
          }
          [img width=65 height=100]http://s1.picofile.com/file/7243484622/untitled.bmp[/img]

          دیدگاه


            #6
            پاسخ : سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید

            #include<p18f4550.h>
            #pragma config FOSC=HS , LVP=OFF , WDT=OFF , CPUDIV=OSC1_PLL2
            void b (void);
            void n (void);
            #pragma code bn=0x0008
            void bn (void)
            {
            _asm
            goto b
            _endasm
            }
            #pragma code
            #pragma interrupt b
            void b (void)
            {
            while(INTCONbits.RBIF==1)
            {
            n();
            }
            }
            unsigned char S;
            void main()
            {
            ADCON1=0X0F;
            TRISD=0X00;
            TRISB=0XFF;
            LATB=0XF0;
            INTCON2bits.RBPU=0;
            INTCON2bits.RBIP=1;
            INTCONbits.RBIF=0;
            INTCONbits.RBIE=1;
            INTCONbits.GIE=1;
            while(1)
            {
            PORTD=0X00;
            }
            }
            void n (void)
            {
            PORTD=0XFF;
            Delay10KTCYx(100);
            INTCONbits.RBIF=0;
            }
            سلام دستتون در نکنه اقا میلاد و اقا علیرضا این کدمه میشه اصلاحش کنین؟ :redface:

            دیدگاه


              #7
              پاسخ : سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید

              بچه ها یه سوال دیگه اگه بخایم از lcd بصورت 8 بیتی استفاده کنیم چطوریه؟

              دیدگاه


                #8
                پاسخ : سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید

                نوشته اصلی توسط mme74
                بچه ها یه سوال دیگه اگه بخایم از lcd بصورت 8 بیتی استفاده کنیم چطوریه؟
                سلام تو هدر xlcd
                /* Interface type 8-bit or 4-bit
                * For 8-bit operation uncomment the #define BIT8
                */
                /* #define BIT8 */
                این قسمتش تعیین میکنی که چند بیتی باشه که اگه اینو از حاکت کامنت در بیاری هشت بیتی میشه یعنی اینجوری
                /* Interface type 8-bit or 4-bit
                * For 8-bit operation uncomment the #define BIT8
                */
                #define BIT8
                جواب بعضي حرفا فقط يه نفس عميقه ، بذار تو دلت بمونه...

                دیدگاه


                  #9
                  پاسخ : سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید

                  نوشته اصلی توسط alireza hammamizadeh
                  سلام تو هدر xlcd
                  /* Interface type 8-bit or 4-bit
                  * For 8-bit operation uncomment the #define BIT8
                  */
                  /* #define BIT8 */
                  این قسمتش تعیین میکنی که چند بیتی باشه که اگه اینو از حاکت کامنت در بیاری هشت بیتی میشه یعنی اینجوری
                  /* Interface type 8-bit or 4-bit
                  * For 8-bit operation uncomment the #define BIT8
                  */
                  #define BIT8
                  دستت درد نکنه آقا علیرضا اما یه سوال دیگه اون موقع کدوم پایه هارو استفاده میکنیم؟

                  دیدگاه


                    #10
                    پاسخ : سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید

                    سلام
                    این سمت برا تنظیمات ال سی دیه تو هدر xlcd
                    /* Interface type 8-bit or 4-bit
                    * For 8-bit operation uncomment the #define BIT8
                    */
                    /* #define BIT8 */

                    /* When in 4-bit interface define if the data is in the upper
                    * or lower nibble. For lower nibble, comment the #define UPPER
                    */
                    /* #define UPPER */

                    /* DATA_PORT defines the port to which the LCD data lines are connected */
                    #define DATA_PORT PORTB
                    #define TRIS_DATA_PORT TRISB

                    /* CTRL_PORT defines the port where the control lines are connected.
                    * These are just samples, change to match your application.
                    */
                    #define RW_PIN LATBbits.LATB6 /* PORT for RW */
                    #define TRIS_RW TRISBbits.TRISB6 /* TRIS for RW */

                    #define RS_PIN LATBbits.LATB5 /* PORT for RS */
                    #define TRIS_RS TRISBbits.TRISB5 /* TRIS for RS */

                    #define E_PIN LATBbits.LATB4 /* PORT for D */
                    #define TRIS_E TRISBbits.TRISB4 /* TRIS for E */
                    که الان مثلا ما اینجری تعریف میکنیم
                    تو مد هشت بیتی و خطوط دیتا روی پورت دی از صفر تا هفت و خطوط کنترلی هم به شکل زیر
                    Rw==>PORTB6
                    RS==>PORTB5
                    EN==>PORTB4
                    برای خطوط دیتا که هشت بیتیه و پورت دی باید
                    DB0==>PORTD0
                    DB1==>PORTD1
                    DB2==>PORTD2
                    DB3==>PORTD3
                    DB4==>PORTD4
                    DB5==>PORTD5
                    DB6==>PORTD6
                    DB7==>PORTD7
                    و هدر xlcd باید اینجوری باشه
                    کد:
                    /* Interface type 8-bit or 4-bit
                     * For 8-bit operation uncomment the #define BIT8
                     */
                     #define BIT8 
                    
                    /* When in 4-bit interface define if the data is in the upper
                     * or lower nibble. For lower nibble, comment the #define UPPER
                     */
                    /* #define UPPER */
                    
                    /* DATA_PORT defines the port to which the LCD data lines are connected */
                     #define DATA_PORT   		PORTD
                     #define TRIS_DATA_PORT 		TRISD
                    
                    /* CTRL_PORT defines the port where the control lines are connected.
                     * These are just samples, change to match your application.
                     */
                     #define RW_PIN  LATBbits.LATB6  		/* PORT for RW */
                     #define TRIS_RW TRISBbits.TRISB6  	/* TRIS for RW */
                    
                     #define RS_PIN  LATBbits.LATB5  		/* PORT for RS */
                     #define TRIS_RS TRISBbits.TRISB5  	/* TRIS for RS */
                    
                     #define E_PIN  LATBbits.LATB4 		/* PORT for D */
                     #define TRIS_E  TRISBbits.TRISB4  	/* TRIS for E */
                    جواب بعضي حرفا فقط يه نفس عميقه ، بذار تو دلت بمونه...

                    دیدگاه


                      #11
                      پاسخ : سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید


                      #include <p18f4550.h>
                      #include <dELAYS.h>
                      #pragma config FOSC =HS
                      #pragma config CPUDIV = OSC1_PLL2
                      void n (void)
                      {
                      LATD=0;
                      Delay10KTCYx(200);
                      INTCONbits.RBIF=0;
                      }
                      #pragma config WDT = OFF
                      #pragma config LVP = OFF
                      void HIGH_ISR(void);
                      #pragma code HIGH = 0x0008
                      void my_int_HIGH (void)
                      {
                      _asm
                      goto HIGH_ISR
                      _endasm
                      }//
                      #pragma code
                      #pragma interrupt HIGH_ISR
                      void HIGH_ISR(void)
                      {
                      if(INTCONbits.RBIF==1)
                      {
                      n();
                      }
                      }
                      void main ( void )
                      {

                      ADCON0=0;
                      ADCON1=0X0F;
                      TRISB=0XF0;
                      LATB=0X00;
                      TRISD=0X00;
                      LATD=0X00;
                      RCONbits.IPEN=1;
                      INTCONbits.GIE=1;
                      INTCONbits.PEIE=1;
                      INTCONbits.RBIE=1;
                      INTCONbits.RBIF=0;
                      INTCON2bits.RBIP=1;
                      while(1)
                      {
                      LATD=255;
                      }
                      }
                      جواب بعضي حرفا فقط يه نفس عميقه ، بذار تو دلت بمونه...

                      دیدگاه


                        #12
                        پاسخ : سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید

                        سلام :bye دستت در نکنه اقا غلیرضا مرسی که جواب سوالات رو دادی :wow: و اما یه سوال دیگه که انشاالله اخرین سوالمه :redface:.
                        چطور به میکرو بگیم که اگه 5 ثانیه کار نکردی به حالت sleep برو یا کار دیگه انجام بده؟
                        و همچنین تو eccp چهار تا پایه خروجی گذاشته در موردش یه مقدار توضیح بدین برنامه نویسیش رو بلدم oo:.

                        دیدگاه


                          #13
                          پاسخ : سوال در مورد ایتم طراحی نرم افزار لطفا جواب بدید

                          سلام دوست من در 4550 چندتا از I/O ها تک وضعیتی هستند ، حواست باشه اینو هر کسی بهت نمیگه
                          برای فرستادن در SLEEP باید از تایمر ها استفاده کنی و در وقفه سرریز تایمر را متوقف کنی و عملیات مورد نظر را انجام بدی .
                          در مورد مدول های جانبی میکرو به کتاب مزیدی و دیتا شیت میکرو سر بزن.

                          دیدگاه

                          لطفا صبر کنید...
                          X