STC89C51 发表于 2023-11-7 14:44:38

2023实验日记STC32位单片机STC32G12K128-实验箱-V9.62

本帖最后由 STC89C51 于 2023-11-22 15:55 编辑

.




2023实验日记STC 32位 8051 单片机



STC32G12K128-实验箱-V9.622023-05-19



STC 32位 8051 单片机


https://www.stcaimcu.com/forum.php?mod=viewthread&tid=323


STC 32位 8051单片机


STC32G12K128-实验箱-V9.622023-05-19

非常感谢冲哥老师的辛苦教学
还有STC公司美女业务员的大力支持
非常感谢感谢
1933892258










.






..........................................................................................



8位数码管 显示8个 不同的数字 程序代码


修改成需要显示的数字代码位置

u8 Show_Tab[8] = {3,3,8,9,2,2,5,8};



..........................................................................................
















#include "COMM/stc.h"               
#include "COMM/usb.h"

#define SEG_Delay 1

#define MAIN_Fosc 24000000UL

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
      
u8 SEG_Tab = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };
u8 COM_Tab = { 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe };
u8 Show_Tab = {3,3,8,9,2,2,5,8};

void sys_init();      

void delay_ms(u16 ms);

void main()                                       
{
      u8 num = 0;
      sys_init();                              
      usb_init();                              
      EA = 1;                                       
      
      while(1)               
      {
                if( DeviceState != DEVSTATE_CONFIGURED )
                        continue;
                if( bUsbOutReady )                                                               
                {
                        usb_OUT_done();
                                       
                }
                P70 = 0;

    P7 = COM_Tab;
    P6 = SEG_Tab];
    delay_ms(SEG_Delay);

    num++;
    if( num >7 )
       num = 0;
      }
}

void sys_init()               
{
    WTST = 0;
    EAXFR = 1;
    CKCON = 0;

      P0M1 = 0x00;   P0M0 = 0x00;   
    P1M1 = 0x00;   P1M0 = 0x00;   
    P2M1 = 0x00;   P2M0 = 0x00;   
    P3M1 = 0x00;   P3M0 = 0x00;   
    P4M1 = 0x00;   P4M0 = 0x00;   
    P5M1 = 0x00;   P5M0 = 0x00;   
    P6M1 = 0x00;   P6M0 = 0x00;   
    P7M1 = 0x00;   P7M0 = 0x00;   
      
    P3M0 = 0x00;
    P3M1 = 0x00;
   
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

   
    IRC48MCR = 0x80;   
    while (!(IRC48MCR & 0x01));

    USBCLK = 0x00;      
    USBCON = 0x90;
}

void delay_ms(u16 ms)
{
      u16 i;
      do
      {
                i = MAIN_Fosc/6000;
                while(--i);
      }while(--ms);
}






.




STC89C51 发表于 2023-11-7 18:45:17

本帖最后由 STC89C51 于 2023-11-7 19:00 编辑

.





第七集:按键点灯上


...........................................................................


按键打印

编写代码程序



#include "COMM/stc.h"                //µ÷ÓÃÍ·Îļþ
#include "COMM/usb.h"

#define KEY1 P32
#define KEY2 P33

#define MAIN_Fosc 24000000UL

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
      
//sbit P40 = P4^0;      //Èý¼«¹Ü¿ØÖÆÒý½Å
//sbit P60 = P6^0;      //LED¿ØÖÆÒý½Å
//sbit P61 = P6^1;      //LED¿ØÖÆÒý½Å

void sys_init();      //º¯ÊýÉùÃ÷

void delay_ms(u16 ms);

void main()                                        //³ÌÐò¿ªÊ¼ÔËÐеÄÈë¿Ú
{
      sys_init();                              //USB¹¦ÄÜ+IO¿Ú³õʼ»¯
      usb_init();                              //usb¿â³õʼ»¯
      EA = 1;                                        //CPU¿ª·ÅÖжϣ¬´ò¿ª×ÜÖжϡ£
      
      while(1)                //ËÀÑ­»·
      {
                if( DeviceState != DEVSTATE_CONFIGURED )         //
                        continue;
                if( bUsbOutReady )                                                               
                {
                        usb_OUT_done();
                        
                        
                }
                P40 = 0;      //Èý¼«¹ÜÒý½ÅÊä³öµÍµçƽ
//                P60 = 0;      //led4Òý½ÅÊä³öµÍµçƽ
//    P61 = 0;      //led5Òý½ÅÊä³öµÍµçƽ

      if( KEY1 == 0 )
                        {
      delay_ms(10);
                              if( KEY1 == 0 )
                              {
                                        printf("??P32?? \r\n");
                              }      
                        }
                              if( KEY2 == 0 )
                        {
      delay_ms(10);
                              if( KEY2 == 0 )
                              {
                                        printf("??P33?? \r\n");
                              }      
                        }
      }
}


void sys_init()                //º¯Êý¶¨Òå
{
    WTST = 0;//ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
    EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
    CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È

      P0M1 = 0x00;   P0M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P1M1 = 0x00;   P1M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P2M1 = 0x00;   P2M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P3M1 = 0x00;   P3M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P4M1 = 0x00;   P4M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P5M1 = 0x00;   P5M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P6M1 = 0x00;   P6M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P7M1 = 0x00;   P7M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
      
    P3M0 = 0x00;
    P3M1 = 0x00;
   
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //ÉèÖÃUSBʹÓõÄʱÖÓÔ´
    IRC48MCR = 0x80;    //ʹÄÜÄÚ²¿48M¸ßËÙIRC
    while (!(IRC48MCR & 0x01));//µÈ´ýʱÖÓÎȶ¨

    USBCLK = 0x00;      //ʹÓÃCDC¹¦ÄÜÐèҪʹÓÃÕâÁ½ÐУ¬HID¹¦ÄܽûÓÃÕâÁ½ÐС£
    USBCON = 0x90;
}


void delay_ms(u16 ms)
{
      u16 i;
      do
      {
                i = MAIN_Fosc/6000;
                while(--i);
      }while(--ms);
}




.....................................................................................................


程序编译成功
0错误0警告



Rebuild target 'Target 1'
compiling Demo.c...
linking...
Program Size: data=8.3 edata+hdata=420 xdata=192 const=66 code=7084
creating hex file from ".\Objects\Demo"...
".\Objects\Demo" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:00:00:00



..................................................................................



按键点灯

编写代码程序








#include "COMM/stc.h"                //µ÷ÓÃÍ·Îļþ
#include "COMM/usb.h"

#define KEY1 P32
#define KEY2 P33

#define MAIN_Fosc 24000000UL

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
       
//sbit P40 = P4^0;        //Èý¼«¹Ü¿ØÖÆÒý½Å
//sbit P60 = P6^0;        //LED¿ØÖÆÒý½Å
//sbit P61 = P6^1;        //LED¿ØÖÆÒý½Å

void sys_init();        //º¯ÊýÉùÃ÷

void delay_ms(u16 ms);

void main()                                        //³ÌÐò¿ªÊ¼ÔËÐеÄÈë¿Ú
{
        sys_init();                                //USB¹¦ÄÜ+IO¿Ú³õʼ»¯
        usb_init();                                //usb¿â³õʼ»¯
        EA = 1;                                        //CPU¿ª·ÅÖжϣ¬´ò¿ª×ÜÖжϡ£
       
        while(1)                //ËÀÑ­»·
        {
                if( DeviceState != DEVSTATE_CONFIGURED )         //
                        continue;
                if( bUsbOutReady )                                                               
                {
                        usb_OUT_done();
                       
                       
                }
                P40 = 0;        //Èý¼«¹ÜÒý½ÅÊä³öµÍµçƽ
//                P60 = 0;        //led4Òý½ÅÊä³öµÍµçƽ
//    P61 = 0;        //led5Òý½ÅÊä³öµÍµçƽ

      if( KEY1 == 0 )
                        {
      delay_ms(10);
                                if( KEY1 == 0 )
                                {
                                        printf("??P32?? \r\n");
          P60 = 0;
                                }       
                        }
      else
                        {
                           P60 = 1;
                        }

                          if( KEY2 == 0 )
                        {
      delay_ms(10);
                                if( KEY2 == 0 )
                                {
                                        printf("??P33?? \r\n");
                                }       
                        }
        }
}


void sys_init()                //º¯Êý¶¨Òå
{
    WTST = 0;//ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
    EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
    CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È

        P0M1 = 0x00;   P0M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P1M1 = 0x00;   P1M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P2M1 = 0x00;   P2M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P3M1 = 0x00;   P3M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P4M1 = 0x00;   P4M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P5M1 = 0x00;   P5M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P6M1 = 0x00;   P6M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P7M1 = 0x00;   P7M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
       
    P3M0 = 0x00;
    P3M1 = 0x00;
   
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //ÉèÖÃUSBʹÓõÄʱÖÓÔ´
    IRC48MCR = 0x80;    //ʹÄÜÄÚ²¿48M¸ßËÙIRC
    while (!(IRC48MCR & 0x01));//µÈ´ýʱÖÓÎȶ¨

    USBCLK = 0x00;        //ʹÓÃCDC¹¦ÄÜÐèҪʹÓÃÕâÁ½ÐУ¬HID¹¦ÄܽûÓÃÕâÁ½ÐС£
    USBCON = 0x90;
}


void delay_ms(u16 ms)
{
      u16 i;
      do
      {
                i = MAIN_Fosc/6000;
                while(--i);
      }while(--ms);
}


......................................................................................


程序编译成功
0错误 0警告




Rebuild target 'Target 1'
compiling Demo.c...
linking...
Program Size: data=8.3 edata+hdata=420 xdata=192 const=66 code=7090
creating hex file from ".\Objects\Demo"...
".\Objects\Demo" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:00:00:01

..............................................................................................



















.

STC89C51 发表于 2023-11-7 19:08:49

本帖最后由 STC89C51 于 2023-11-7 19:29 编辑

.





第七集:按键点灯上


...........................................................................


按键灭灯
编写代码程序



#include "COMM/stc.h"                //µ÷ÓÃÍ·Îļþ
#include "COMM/usb.h"

#define KEY1 P32
#define KEY2 P33

#define MAIN_Fosc 24000000UL

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
      
//sbit P40 = P4^0;      //Èý¼«¹Ü¿ØÖÆÒý½Å
//sbit P60 = P6^0;      //LED¿ØÖÆÒý½Å
//sbit P61 = P6^1;      //LED¿ØÖÆÒý½Å

void sys_init();      //º¯ÊýÉùÃ÷

void delay_ms(u16 ms);

void main()                                        //³ÌÐò¿ªÊ¼ÔËÐеÄÈë¿Ú
{
      sys_init();                              //USB¹¦ÄÜ+IO¿Ú³õʼ»¯
      usb_init();                              //usb¿â³õʼ»¯
      EA = 1;                                        //CPU¿ª·ÅÖжϣ¬´ò¿ª×ÜÖжϡ£
      
      while(1)                //ËÀÑ­»·
      {
                if( DeviceState != DEVSTATE_CONFIGURED )         //
                        continue;
                if( bUsbOutReady )                                                               
                {
                        usb_OUT_done();
                        
                        
                }
                P40 = 0;      //Èý¼«¹ÜÒý½ÅÊä³öµÍµçƽ
//                P60 = 0;      //led4Òý½ÅÊä³öµÍµçƽ
//    P61 = 0;      //led5Òý½ÅÊä³öµÍµçƽ

      if( KEY1 == 0 )
                        {
      delay_ms(10);
                              if( KEY1 == 0 )
                              {
                                        printf("??P32?? \r\n");
          P60 = 0;
                              }      
                        }
      else
                        {
                           P60 = 1;
                        }

                        if( KEY2 == 0 )
                        {
      delay_ms(10);
                              if( KEY2 == 0 )
                              {
                                        printf("??P33?? \r\n");
          P67 = 1;
                              }      
                        }
      else
                        {
                            P67 = 0;
                        }
      }
}


void sys_init()                //º¯Êý¶¨Òå
{
    WTST = 0;//ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
    EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
    CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È

      P0M1 = 0x00;   P0M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P1M1 = 0x00;   P1M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P2M1 = 0x00;   P2M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P3M1 = 0x00;   P3M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P4M1 = 0x00;   P4M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P5M1 = 0x00;   P5M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P6M1 = 0x00;   P6M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P7M1 = 0x00;   P7M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
      
    P3M0 = 0x00;
    P3M1 = 0x00;
   
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //ÉèÖÃUSBʹÓõÄʱÖÓÔ´
    IRC48MCR = 0x80;    //ʹÄÜÄÚ²¿48M¸ßËÙIRC
    while (!(IRC48MCR & 0x01));//µÈ´ýʱÖÓÎȶ¨

    USBCLK = 0x00;      //ʹÓÃCDC¹¦ÄÜÐèҪʹÓÃÕâÁ½ÐУ¬HID¹¦ÄܽûÓÃÕâÁ½ÐС£
    USBCON = 0x90;
}


void delay_ms(u16 ms)
{
      u16 i;
      do
      {
                i = MAIN_Fosc/6000;
                while(--i);
      }while(--ms);
}



......................................................

程序编译成功
0错误 0警告



Rebuild target 'Target 1'
compiling Demo.c...
linking...
Program Size: data=8.3 edata+hdata=420 xdata=192 const=66 code=7096
creating hex file from ".\Objects\Demo"...
".\Objects\Demo" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:00:00:00



...........................................................................................


LED取反
编写程序代码

#include "COMM/stc.h"                //µ÷ÓÃÍ·Îļþ
#include "COMM/usb.h"

#define KEY1 P32
#define KEY2 P33

#define MAIN_Fosc 24000000UL

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
       
//sbit P40 = P4^0;        //Èý¼«¹Ü¿ØÖÆÒý½Å
//sbit P60 = P6^0;        //LED¿ØÖÆÒý½Å
//sbit P61 = P6^1;        //LED¿ØÖÆÒý½Å

void sys_init();        //º¯ÊýÉùÃ÷

void delay_ms(u16 ms);

void main()                                        //³ÌÐò¿ªÊ¼ÔËÐеÄÈë¿Ú
{
        sys_init();                                //USB¹¦ÄÜ+IO¿Ú³õʼ»¯
        usb_init();                                //usb¿â³õʼ»¯
        EA = 1;                                        //CPU¿ª·ÅÖжϣ¬´ò¿ª×ÜÖжϡ£
       
        while(1)                //ËÀÑ­»·
        {
                if( DeviceState != DEVSTATE_CONFIGURED )         //
                        continue;
                if( bUsbOutReady )                                                               
                {
                        usb_OUT_done();
                       
                       
                }
                P40 = 0;        //Èý¼«¹ÜÒý½ÅÊä³öµÍµçƽ
//                P60 = 0;        //led4Òý½ÅÊä³öµÍµçƽ
//    P61 = 0;        //led5Òý½ÅÊä³öµÍµçƽ

      if( KEY1 == 0 )
                        {
      delay_ms(10);
                                if( KEY1 == 0 )
                                {
                                        printf("??P32?? \r\n");
          P60 = 0;
                                }       
                        }
      else
                        {
                           P60 = 1;
                        }

//                          if( KEY2 == 0 )
//                        {
//      delay_ms(10);
//                                if( KEY2 == 0 )
//                                {
//                                        printf("??P33?? \r\n");
//          P67 = 1;
//                                }       
//                        }
//      else
//                        {
//                          P67 = 0;
//                        }

                          if( KEY2 == 0 )
                        {
      delay_ms(10);
                                if( KEY2 == 0 )
                                {
                                        printf("??P33?? LED??\r\n");
          P67 = !P67;
          delay_ms(500);
                                }       
                        }

                       
        }
}


void sys_init()                //º¯Êý¶¨Òå
{
    WTST = 0;//ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
    EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
    CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È

        P0M1 = 0x00;   P0M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P1M1 = 0x00;   P1M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P2M1 = 0x00;   P2M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P3M1 = 0x00;   P3M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P4M1 = 0x00;   P4M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P5M1 = 0x00;   P5M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P6M1 = 0x00;   P6M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P7M1 = 0x00;   P7M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
       
    P3M0 = 0x00;
    P3M1 = 0x00;
   
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //ÉèÖÃUSBʹÓõÄʱÖÓÔ´
    IRC48MCR = 0x80;    //ʹÄÜÄÚ²¿48M¸ßËÙIRC
    while (!(IRC48MCR & 0x01));//µÈ´ýʱÖÓÎȶ¨

    USBCLK = 0x00;        //ʹÓÃCDC¹¦ÄÜÐèҪʹÓÃÕâÁ½ÐУ¬HID¹¦ÄܽûÓÃÕâÁ½ÐС£
    USBCON = 0x90;
}


void delay_ms(u16 ms)
{
      u16 i;
      do
      {
                i = MAIN_Fosc/6000;
                while(--i);
      }while(--ms);
}


........................................................

程序编写成功
0错误 0警告



Rebuild target 'Target 1'
compiling Demo.c...
linking...
Program Size: data=8.3 edata+hdata=420 xdata=192 const=71 code=7099
creating hex file from ".\Objects\Demo"...
".\Objects\Demo" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:00:00:01



......................................................................................













.


STC89C51 发表于 2023-11-7 19:33:09

本帖最后由 STC89C51 于 2023-11-7 19:43 编辑

.



第七集:按键点灯上



.............................................................

3.3按键按下一次,LED状态改变一次

编写代码程序


#include "COMM/stc.h"                //µ÷ÓÃÍ·Îļþ
#include "COMM/usb.h"

#define KEY1 P32
#define KEY2 P33

#define MAIN_Fosc 24000000UL

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
      
//sbit P40 = P4^0;      //Èý¼«¹Ü¿ØÖÆÒý½Å
//sbit P60 = P6^0;      //LED¿ØÖÆÒý½Å
//sbit P61 = P6^1;      //LED¿ØÖÆÒý½Å

void sys_init();      //º¯ÊýÉùÃ÷

void delay_ms(u16 ms);

void main()                                        //³ÌÐò¿ªÊ¼ÔËÐеÄÈë¿Ú
{
      sys_init();                              //USB¹¦ÄÜ+IO¿Ú³õʼ»¯
      usb_init();                              //usb¿â³õʼ»¯
      EA = 1;                                        //CPU¿ª·ÅÖжϣ¬´ò¿ª×ÜÖжϡ£
      
      while(1)                //ËÀÑ­»·
      {
                if( DeviceState != DEVSTATE_CONFIGURED )         //
                        continue;
                if( bUsbOutReady )                                                               
                {
                        usb_OUT_done();
                        
                        
                }
                P40 = 0;      //Èý¼«¹ÜÒý½ÅÊä³öµÍµçƽ
//                P60 = 0;      //led4Òý½ÅÊä³öµÍµçƽ
//    P61 = 0;      //led5Òý½ÅÊä³öµÍµçƽ

      if( KEY1 == 0 )
                        {
      delay_ms(10);
                              if( KEY1 == 0 )
                              {
                                        printf("??P32?? \r\n");
          P60 = 0;
                              }      
                        }
      else
                        {
                           P60 = 1;
                        }

//                        if( KEY2 == 0 )
//                        {
//      delay_ms(10);
//                              if( KEY2 == 0 )
//                              {
//                                        printf("??P33?? \r\n");
//          P67 = 1;
//                              }      
//                        }
//      else
//                        {
//                            P67 = 0;
//                        }

                        if( KEY2 == 0 )
                        {
      delay_ms(10);
                              if( KEY2 == 0 )
                              {
                                        printf("??P33?? LED??\r\n");
          P67 = !P67;
          while(KEY2 == 0)
                                        {
                                       
                                        }
                              }      
                        }

                        
      }
}


void sys_init()                //º¯Êý¶¨Òå
{
    WTST = 0;//ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
    EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
    CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È

      P0M1 = 0x00;   P0M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P1M1 = 0x00;   P1M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P2M1 = 0x00;   P2M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P3M1 = 0x00;   P3M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P4M1 = 0x00;   P4M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P5M1 = 0x00;   P5M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P6M1 = 0x00;   P6M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P7M1 = 0x00;   P7M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
      
    P3M0 = 0x00;
    P3M1 = 0x00;
   
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //ÉèÖÃUSBʹÓõÄʱÖÓÔ´
    IRC48MCR = 0x80;    //ʹÄÜÄÚ²¿48M¸ßËÙIRC
    while (!(IRC48MCR & 0x01));//µÈ´ýʱÖÓÎȶ¨

    USBCLK = 0x00;      //ʹÓÃCDC¹¦ÄÜÐèҪʹÓÃÕâÁ½ÐУ¬HID¹¦ÄܽûÓÃÕâÁ½ÐС£
    USBCON = 0x90;
}


void delay_ms(u16 ms)
{
      u16 i;
      do
      {
                i = MAIN_Fosc/6000;
                while(--i);
      }while(--ms);
}


.........................................................................


程序编译成功
0错误 0警告


Rebuild target 'Target 1'
compiling Demo.c...
linking...
Program Size: data=8.3 edata+hdata=420 xdata=192 const=71 code=7105
creating hex file from ".\Objects\Demo"...
".\Objects\Demo" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:00:00:01



........................................................................................



按键按下松开指示灯才会有变化




#include "COMM/stc.h"                //µ÷ÓÃÍ·Îļþ
#include "COMM/usb.h"

#define KEY1 P32
#define KEY2 P33

#define MAIN_Fosc 24000000UL

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
      
//sbit P40 = P4^0;      //Èý¼«¹Ü¿ØÖÆÒý½Å
//sbit P60 = P6^0;      //LED¿ØÖÆÒý½Å
//sbit P61 = P6^1;      //LED¿ØÖÆÒý½Å

void sys_init();      //º¯ÊýÉùÃ÷

void delay_ms(u16 ms);

void main()                                        //³ÌÐò¿ªÊ¼ÔËÐеÄÈë¿Ú
{
      sys_init();                              //USB¹¦ÄÜ+IO¿Ú³õʼ»¯
      usb_init();                              //usb¿â³õʼ»¯
      EA = 1;                                        //CPU¿ª·ÅÖжϣ¬´ò¿ª×ÜÖжϡ£
      
      while(1)                //ËÀÑ­»·
      {
                if( DeviceState != DEVSTATE_CONFIGURED )         //
                        continue;
                if( bUsbOutReady )                                                               
                {
                        usb_OUT_done();
                        
                        
                }
                P40 = 0;      //Èý¼«¹ÜÒý½ÅÊä³öµÍµçƽ
//                P60 = 0;      //led4Òý½ÅÊä³öµÍµçƽ
//    P61 = 0;      //led5Òý½ÅÊä³öµÍµçƽ

      if( KEY1 == 0 )
                        {
      delay_ms(10);
                              if( KEY1 == 0 )
                              {
                                        printf("??P32?? \r\n");
          P60 = 0;
                              }      
                        }
      else
                        {
                           P60 = 1;
                        }

//                        if( KEY2 == 0 )
//                        {
//      delay_ms(10);
//                              if( KEY2 == 0 )
//                              {
//                                        printf("??P33?? \r\n");
//          P67 = 1;
//                              }      
//                        }
//      else
//                        {
//                            P67 = 0;
//                        }

                        if( KEY2 == 0 )
                        {
      delay_ms(10);
                              if( KEY2 == 0 )
                              {

          while(KEY2 == 0)
                                        {
                                       
                                        }
                                        printf("??P33?? LED??\r\n");
          P67 = !P67;
                              }      
                        }

                        
      }
}


void sys_init()                //º¯Êý¶¨Òå
{
    WTST = 0;//ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
    EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
    CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È

      P0M1 = 0x00;   P0M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P1M1 = 0x00;   P1M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P2M1 = 0x00;   P2M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P3M1 = 0x00;   P3M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P4M1 = 0x00;   P4M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P5M1 = 0x00;   P5M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P6M1 = 0x00;   P6M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
    P7M1 = 0x00;   P7M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
      
    P3M0 = 0x00;
    P3M1 = 0x00;
   
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //ÉèÖÃUSBʹÓõÄʱÖÓÔ´
    IRC48MCR = 0x80;    //ʹÄÜÄÚ²¿48M¸ßËÙIRC
    while (!(IRC48MCR & 0x01));//µÈ´ýʱÖÓÎȶ¨

    USBCLK = 0x00;      //ʹÓÃCDC¹¦ÄÜÐèҪʹÓÃÕâÁ½ÐУ¬HID¹¦ÄܽûÓÃÕâÁ½ÐС£
    USBCON = 0x90;
}


void delay_ms(u16 ms)
{
      u16 i;
      do
      {
                i = MAIN_Fosc/6000;
                while(--i);
      }while(--ms);
}
................................................................................................





























.


WangChong 发表于 2023-11-9 12:39:53

页: [1]
查看完整版本: 2023实验日记STC32位单片机STC32G12K128-实验箱-V9.62