找回密码
 立即注册
查看: 1090|回复: 4

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

[复制链接]

3

主题

24

回帖

111

积分

注册会员

积分
111
发表于 2023-11-7 14:44:38 | 显示全部楼层 |阅读模式
本帖最后由 STC89C51 于 2023-11-22 15:55 编辑

.




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



STC32G12K128-实验箱-V9.62  2023-05-19



STC 32位 8051 单片机


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


STC 32位 8051单片机  


STC32G12K128-实验箱-V9.62  2023-05-19

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










.






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



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


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

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



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
















  1. #include "COMM/stc.h"               
  2. #include "COMM/usb.h"
  3. #define SEG_Delay 1
  4. #define MAIN_Fosc 24000000UL
  5. char *USER_DEVICEDESC = NULL;
  6. char *USER_PRODUCTDESC = NULL;
  7. char *USER_STCISPCMD = "@STCISP#";
  8.         
  9. u8 SEG_Tab[10] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };
  10. u8 COM_Tab[8] = { 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe };
  11. u8 Show_Tab[8] = {3,3,8,9,2,2,5,8};
  12. void sys_init();        
  13. void delay_ms(u16 ms);
  14. void main()                                       
  15. {
  16.         u8 num = 0;
  17.         sys_init();                                
  18.         usb_init();                                
  19.         EA = 1;                                       
  20.         
  21.         while(1)               
  22.         {
  23.                 if( DeviceState != DEVSTATE_CONFIGURED )
  24.                         continue;
  25.                 if( bUsbOutReady )                                                               
  26.                 {
  27.                         usb_OUT_done();
  28.                                        
  29.                 }
  30.                 P70 = 0;
  31.     P7 = COM_Tab[num];
  32.     P6 = SEG_Tab[Show_Tab[num]];
  33.     delay_ms(SEG_Delay);
  34.     num++;
  35.     if( num >7 )
  36.        num = 0;
  37.         }
  38. }
  39. void sys_init()               
  40. {
  41.     WTST = 0;  
  42.     EAXFR = 1;
  43.     CKCON = 0;
  44.         P0M1 = 0x00;   P0M0 = 0x00;   
  45.     P1M1 = 0x00;   P1M0 = 0x00;   
  46.     P2M1 = 0x00;   P2M0 = 0x00;   
  47.     P3M1 = 0x00;   P3M0 = 0x00;   
  48.     P4M1 = 0x00;   P4M0 = 0x00;   
  49.     P5M1 = 0x00;   P5M0 = 0x00;   
  50.     P6M1 = 0x00;   P6M0 = 0x00;   
  51.     P7M1 = 0x00;   P7M0 = 0x00;   
  52.         
  53.     P3M0 = 0x00;
  54.     P3M1 = 0x00;
  55.    
  56.     P3M0 &= ~0x03;
  57.     P3M1 |= 0x03;
  58.    
  59.     IRC48MCR = 0x80;   
  60.     while (!(IRC48MCR & 0x01));  
  61.     USBCLK = 0x00;        
  62.     USBCON = 0x90;
  63. }
  64. void delay_ms(u16 ms)
  65. {
  66.         u16 i;
  67.         do
  68.         {
  69.                 i = MAIN_Fosc/6000;
  70.                 while(--i);
  71.         }while(--ms);
  72. }
复制代码







.




20231107_232503.jpg
20231107_232619.jpg

1933892258.rar

99.96 KB, 下载次数: 51

回复

使用道具 举报 送花

3

主题

24

回帖

111

积分

注册会员

积分
111
发表于 2023-11-7 18:45:17 | 显示全部楼层
本帖最后由 STC89C51 于 2023-11-7 19:00 编辑

.





第七集:按键点灯上


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


按键打印

编写代码程序



  1. #include "COMM/stc.h"                //µ÷ÓÃÍ·Îļþ
  2. #include "COMM/usb.h"
  3. #define KEY1 P32
  4. #define KEY2 P33
  5. #define MAIN_Fosc 24000000UL
  6. char *USER_DEVICEDESC = NULL;
  7. char *USER_PRODUCTDESC = NULL;
  8. char *USER_STCISPCMD = "@STCISP#";
  9.         
  10. //sbit P40 = P4^0;        //Èý¼«¹Ü¿ØÖÆÒý½Å
  11. //sbit P60 = P6^0;        //LED¿ØÖÆÒý½Å
  12. //sbit P61 = P6^1;        //LED¿ØÖÆÒý½Å
  13. void sys_init();        //º¯ÊýÉùÃ÷
  14. void delay_ms(u16 ms);
  15. void main()                                        //³ÌÐò¿ªÊ¼ÔËÐеÄÈë¿Ú
  16. {
  17.         sys_init();                                //USB¹¦ÄÜ+IO¿Ú³õʼ»¯
  18.         usb_init();                                //usb¿â³õʼ»¯
  19.         EA = 1;                                        //CPU¿ª·ÅÖжϣ¬´ò¿ª×ÜÖжϡ£
  20.         
  21.         while(1)                //ËÀÑ­»·
  22.         {
  23.                 if( DeviceState != DEVSTATE_CONFIGURED )         //
  24.                         continue;
  25.                 if( bUsbOutReady )                                                               
  26.                 {
  27.                         usb_OUT_done();
  28.                         
  29.                         
  30.                 }
  31.                 P40 = 0;        //Èý¼«¹ÜÒý½ÅÊä³öµÍµçƽ
  32. //                P60 = 0;        //led4Òý½ÅÊä³öµÍµçƽ
  33. //    P61 = 0;        //led5Òý½ÅÊä³öµÍµçƽ
  34.       if( KEY1 == 0 )
  35.                         {
  36.         delay_ms(10);
  37.                                 if( KEY1 == 0 )
  38.                                 {
  39.                                         printf("??P32?? \r\n");
  40.                                 }        
  41.                         }
  42.                               if( KEY2 == 0 )
  43.                         {
  44.         delay_ms(10);
  45.                                 if( KEY2 == 0 )
  46.                                 {
  47.                                         printf("??P33?? \r\n");
  48.                                 }        
  49.                         }
  50.         }
  51. }
  52. void sys_init()                //º¯Êý¶¨Òå
  53. {
  54.     WTST = 0;  //ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
  55.     EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
  56.     CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È
  57.         P0M1 = 0x00;   P0M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  58.     P1M1 = 0x00;   P1M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  59.     P2M1 = 0x00;   P2M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  60.     P3M1 = 0x00;   P3M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  61.     P4M1 = 0x00;   P4M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  62.     P5M1 = 0x00;   P5M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  63.     P6M1 = 0x00;   P6M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  64.     P7M1 = 0x00;   P7M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  65.         
  66.     P3M0 = 0x00;
  67.     P3M1 = 0x00;
  68.    
  69.     P3M0 &= ~0x03;
  70.     P3M1 |= 0x03;
  71.     //ÉèÖÃUSBʹÓõÄʱÖÓÔ´
  72.     IRC48MCR = 0x80;    //ʹÄÜÄÚ²¿48M¸ßËÙIRC
  73.     while (!(IRC48MCR & 0x01));  //µÈ´ýʱÖÓÎȶ¨
  74.     USBCLK = 0x00;        //ʹÓÃCDC¹¦ÄÜÐèҪʹÓÃÕâÁ½ÐУ¬HID¹¦ÄܽûÓÃÕâÁ½ÐС£
  75.     USBCON = 0x90;
  76. }
  77. void delay_ms(u16 ms)
  78. {
  79.         u16 i;
  80.         do
  81.         {
  82.                 i = MAIN_Fosc/6000;
  83.                 while(--i);
  84.         }while(--ms);
  85. }
复制代码





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


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



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




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



按键点灯

编写代码程序








  1. #include "COMM/stc.h"                //µ÷ÓÃÍ·Îļþ
  2. #include "COMM/usb.h"
  3. #define KEY1 P32
  4. #define KEY2 P33
  5. #define MAIN_Fosc 24000000UL
  6. char *USER_DEVICEDESC = NULL;
  7. char *USER_PRODUCTDESC = NULL;
  8. char *USER_STCISPCMD = "@STCISP#";
  9.        
  10. //sbit P40 = P4^0;        //Èý¼«¹Ü¿ØÖÆÒý½Å
  11. //sbit P60 = P6^0;        //LED¿ØÖÆÒý½Å
  12. //sbit P61 = P6^1;        //LED¿ØÖÆÒý½Å
  13. void sys_init();        //º¯ÊýÉùÃ÷
  14. void delay_ms(u16 ms);
  15. void main()                                        //³ÌÐò¿ªÊ¼ÔËÐеÄÈë¿Ú
  16. {
  17.         sys_init();                                //USB¹¦ÄÜ+IO¿Ú³õʼ»¯
  18.         usb_init();                                //usb¿â³õʼ»¯
  19.         EA = 1;                                        //CPU¿ª·ÅÖжϣ¬´ò¿ª×ÜÖжϡ£
  20.        
  21.         while(1)                //ËÀÑ­»·
  22.         {
  23.                 if( DeviceState != DEVSTATE_CONFIGURED )         //
  24.                         continue;
  25.                 if( bUsbOutReady )                                                               
  26.                 {
  27.                         usb_OUT_done();
  28.                        
  29.                        
  30.                 }
  31.                 P40 = 0;        //Èý¼«¹ÜÒý½ÅÊä³öµÍµçƽ
  32. //                P60 = 0;        //led4Òý½ÅÊä³öµÍµçƽ
  33. //    P61 = 0;        //led5Òý½ÅÊä³öµÍµçƽ
  34.       if( KEY1 == 0 )
  35.                         {
  36.         delay_ms(10);
  37.                                 if( KEY1 == 0 )
  38.                                 {
  39.                                         printf("??P32?? \r\n");
  40.           P60 = 0;
  41.                                 }       
  42.                         }
  43.       else
  44.                         {
  45.                            P60 = 1;
  46.                         }
  47.                           if( KEY2 == 0 )
  48.                         {
  49.         delay_ms(10);
  50.                                 if( KEY2 == 0 )
  51.                                 {
  52.                                         printf("??P33?? \r\n");
  53.                                 }       
  54.                         }
  55.         }
  56. }
  57. void sys_init()                //º¯Êý¶¨Òå
  58. {
  59.     WTST = 0;  //ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
  60.     EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
  61.     CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È
  62.         P0M1 = 0x00;   P0M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  63.     P1M1 = 0x00;   P1M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  64.     P2M1 = 0x00;   P2M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  65.     P3M1 = 0x00;   P3M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  66.     P4M1 = 0x00;   P4M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  67.     P5M1 = 0x00;   P5M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  68.     P6M1 = 0x00;   P6M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  69.     P7M1 = 0x00;   P7M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  70.        
  71.     P3M0 = 0x00;
  72.     P3M1 = 0x00;
  73.    
  74.     P3M0 &= ~0x03;
  75.     P3M1 |= 0x03;
  76.     //ÉèÖÃUSBʹÓõÄʱÖÓÔ´
  77.     IRC48MCR = 0x80;    //ʹÄÜÄÚ²¿48M¸ßËÙIRC
  78.     while (!(IRC48MCR & 0x01));  //µÈ´ýʱÖÓÎȶ¨
  79.     USBCLK = 0x00;        //ʹÓÃCDC¹¦ÄÜÐèҪʹÓÃÕâÁ½ÐУ¬HID¹¦ÄܽûÓÃÕâÁ½ÐС£
  80.     USBCON = 0x90;
  81. }
  82. void delay_ms(u16 ms)
  83. {
  84.         u16 i;
  85.         do
  86.         {
  87.                 i = MAIN_Fosc/6000;
  88.                 while(--i);
  89.         }while(--ms);
  90. }
复制代码



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


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




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


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



















.

回复 支持 反对

使用道具 举报 送花

3

主题

24

回帖

111

积分

注册会员

积分
111
发表于 2023-11-7 19:08:49 | 显示全部楼层
本帖最后由 STC89C51 于 2023-11-7 19:29 编辑

.





第七集:按键点灯上


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


按键灭灯
编写代码程序



  1. #include "COMM/stc.h"                //µ÷ÓÃÍ·Îļþ
  2. #include "COMM/usb.h"
  3. #define KEY1 P32
  4. #define KEY2 P33
  5. #define MAIN_Fosc 24000000UL
  6. char *USER_DEVICEDESC = NULL;
  7. char *USER_PRODUCTDESC = NULL;
  8. char *USER_STCISPCMD = "@STCISP#";
  9.         
  10. //sbit P40 = P4^0;        //Èý¼«¹Ü¿ØÖÆÒý½Å
  11. //sbit P60 = P6^0;        //LED¿ØÖÆÒý½Å
  12. //sbit P61 = P6^1;        //LED¿ØÖÆÒý½Å
  13. void sys_init();        //º¯ÊýÉùÃ÷
  14. void delay_ms(u16 ms);
  15. void main()                                        //³ÌÐò¿ªÊ¼ÔËÐеÄÈë¿Ú
  16. {
  17.         sys_init();                                //USB¹¦ÄÜ+IO¿Ú³õʼ»¯
  18.         usb_init();                                //usb¿â³õʼ»¯
  19.         EA = 1;                                        //CPU¿ª·ÅÖжϣ¬´ò¿ª×ÜÖжϡ£
  20.         
  21.         while(1)                //ËÀÑ­»·
  22.         {
  23.                 if( DeviceState != DEVSTATE_CONFIGURED )         //
  24.                         continue;
  25.                 if( bUsbOutReady )                                                               
  26.                 {
  27.                         usb_OUT_done();
  28.                         
  29.                         
  30.                 }
  31.                 P40 = 0;        //Èý¼«¹ÜÒý½ÅÊä³öµÍµçƽ
  32. //                P60 = 0;        //led4Òý½ÅÊä³öµÍµçƽ
  33. //    P61 = 0;        //led5Òý½ÅÊä³öµÍµçƽ
  34.       if( KEY1 == 0 )
  35.                         {
  36.         delay_ms(10);
  37.                                 if( KEY1 == 0 )
  38.                                 {
  39.                                         printf("??P32?? \r\n");
  40.           P60 = 0;
  41.                                 }        
  42.                         }
  43.       else
  44.                         {
  45.                            P60 = 1;
  46.                         }
  47.                           if( KEY2 == 0 )
  48.                         {
  49.         delay_ms(10);
  50.                                 if( KEY2 == 0 )
  51.                                 {
  52.                                         printf("??P33?? \r\n");
  53.           P67 = 1;
  54.                                 }        
  55.                         }
  56.       else
  57.                         {
  58.                             P67 = 0;
  59.                         }
  60.         }
  61. }
  62. void sys_init()                //º¯Êý¶¨Òå
  63. {
  64.     WTST = 0;  //ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
  65.     EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
  66.     CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È
  67.         P0M1 = 0x00;   P0M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  68.     P1M1 = 0x00;   P1M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  69.     P2M1 = 0x00;   P2M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  70.     P3M1 = 0x00;   P3M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  71.     P4M1 = 0x00;   P4M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  72.     P5M1 = 0x00;   P5M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  73.     P6M1 = 0x00;   P6M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  74.     P7M1 = 0x00;   P7M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  75.         
  76.     P3M0 = 0x00;
  77.     P3M1 = 0x00;
  78.    
  79.     P3M0 &= ~0x03;
  80.     P3M1 |= 0x03;
  81.     //ÉèÖÃUSBʹÓõÄʱÖÓÔ´
  82.     IRC48MCR = 0x80;    //ʹÄÜÄÚ²¿48M¸ßËÙIRC
  83.     while (!(IRC48MCR & 0x01));  //µÈ´ýʱÖÓÎȶ¨
  84.     USBCLK = 0x00;        //ʹÓÃCDC¹¦ÄÜÐèҪʹÓÃÕâÁ½ÐУ¬HID¹¦ÄܽûÓÃÕâÁ½ÐС£
  85.     USBCON = 0x90;
  86. }
  87. void delay_ms(u16 ms)
  88. {
  89.         u16 i;
  90.         do
  91.         {
  92.                 i = MAIN_Fosc/6000;
  93.                 while(--i);
  94.         }while(--ms);
  95. }
复制代码




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

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



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




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


LED取反
编写程序代码

  1. #include "COMM/stc.h"                //µ÷ÓÃÍ·Îļþ
  2. #include "COMM/usb.h"
  3. #define KEY1 P32
  4. #define KEY2 P33
  5. #define MAIN_Fosc 24000000UL
  6. char *USER_DEVICEDESC = NULL;
  7. char *USER_PRODUCTDESC = NULL;
  8. char *USER_STCISPCMD = "@STCISP#";
  9.        
  10. //sbit P40 = P4^0;        //Èý¼«¹Ü¿ØÖÆÒý½Å
  11. //sbit P60 = P6^0;        //LED¿ØÖÆÒý½Å
  12. //sbit P61 = P6^1;        //LED¿ØÖÆÒý½Å
  13. void sys_init();        //º¯ÊýÉùÃ÷
  14. void delay_ms(u16 ms);
  15. void main()                                        //³ÌÐò¿ªÊ¼ÔËÐеÄÈë¿Ú
  16. {
  17.         sys_init();                                //USB¹¦ÄÜ+IO¿Ú³õʼ»¯
  18.         usb_init();                                //usb¿â³õʼ»¯
  19.         EA = 1;                                        //CPU¿ª·ÅÖжϣ¬´ò¿ª×ÜÖжϡ£
  20.        
  21.         while(1)                //ËÀÑ­»·
  22.         {
  23.                 if( DeviceState != DEVSTATE_CONFIGURED )         //
  24.                         continue;
  25.                 if( bUsbOutReady )                                                               
  26.                 {
  27.                         usb_OUT_done();
  28.                        
  29.                        
  30.                 }
  31.                 P40 = 0;        //Èý¼«¹ÜÒý½ÅÊä³öµÍµçƽ
  32. //                P60 = 0;        //led4Òý½ÅÊä³öµÍµçƽ
  33. //    P61 = 0;        //led5Òý½ÅÊä³öµÍµçƽ
  34.       if( KEY1 == 0 )
  35.                         {
  36.         delay_ms(10);
  37.                                 if( KEY1 == 0 )
  38.                                 {
  39.                                         printf("??P32?? \r\n");
  40.           P60 = 0;
  41.                                 }       
  42.                         }
  43.       else
  44.                         {
  45.                            P60 = 1;
  46.                         }
  47. //                          if( KEY2 == 0 )
  48. //                        {
  49. //        delay_ms(10);
  50. //                                if( KEY2 == 0 )
  51. //                                {
  52. //                                        printf("??P33?? \r\n");
  53. //          P67 = 1;
  54. //                                }       
  55. //                        }
  56. //      else
  57. //                        {
  58. //                            P67 = 0;
  59. //                        }
  60.                           if( KEY2 == 0 )
  61.                         {
  62.         delay_ms(10);
  63.                                 if( KEY2 == 0 )
  64.                                 {
  65.                                         printf("??P33?? LED??\r\n");
  66.           P67 = !P67;
  67.           delay_ms(500);
  68.                                 }       
  69.                         }
  70.                        
  71.         }
  72. }
  73. void sys_init()                //º¯Êý¶¨Òå
  74. {
  75.     WTST = 0;  //ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
  76.     EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
  77.     CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È
  78.         P0M1 = 0x00;   P0M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  79.     P1M1 = 0x00;   P1M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  80.     P2M1 = 0x00;   P2M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  81.     P3M1 = 0x00;   P3M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  82.     P4M1 = 0x00;   P4M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  83.     P5M1 = 0x00;   P5M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  84.     P6M1 = 0x00;   P6M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  85.     P7M1 = 0x00;   P7M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  86.        
  87.     P3M0 = 0x00;
  88.     P3M1 = 0x00;
  89.    
  90.     P3M0 &= ~0x03;
  91.     P3M1 |= 0x03;
  92.     //ÉèÖÃUSBʹÓõÄʱÖÓÔ´
  93.     IRC48MCR = 0x80;    //ʹÄÜÄÚ²¿48M¸ßËÙIRC
  94.     while (!(IRC48MCR & 0x01));  //µÈ´ýʱÖÓÎȶ¨
  95.     USBCLK = 0x00;        //ʹÓÃCDC¹¦ÄÜÐèҪʹÓÃÕâÁ½ÐУ¬HID¹¦ÄܽûÓÃÕâÁ½ÐС£
  96.     USBCON = 0x90;
  97. }
  98. void delay_ms(u16 ms)
  99. {
  100.         u16 i;
  101.         do
  102.         {
  103.                 i = MAIN_Fosc/6000;
  104.                 while(--i);
  105.         }while(--ms);
  106. }
复制代码



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

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



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




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













.


回复 支持 反对

使用道具 举报 送花

3

主题

24

回帖

111

积分

注册会员

积分
111
发表于 2023-11-7 19:33:09 | 显示全部楼层
本帖最后由 STC89C51 于 2023-11-7 19:43 编辑

.



第七集:按键点灯上



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

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

编写代码程序


  1. #include "COMM/stc.h"                //µ÷ÓÃÍ·Îļþ
  2. #include "COMM/usb.h"
  3. #define KEY1 P32
  4. #define KEY2 P33
  5. #define MAIN_Fosc 24000000UL
  6. char *USER_DEVICEDESC = NULL;
  7. char *USER_PRODUCTDESC = NULL;
  8. char *USER_STCISPCMD = "@STCISP#";
  9.         
  10. //sbit P40 = P4^0;        //Èý¼«¹Ü¿ØÖÆÒý½Å
  11. //sbit P60 = P6^0;        //LED¿ØÖÆÒý½Å
  12. //sbit P61 = P6^1;        //LED¿ØÖÆÒý½Å
  13. void sys_init();        //º¯ÊýÉùÃ÷
  14. void delay_ms(u16 ms);
  15. void main()                                        //³ÌÐò¿ªÊ¼ÔËÐеÄÈë¿Ú
  16. {
  17.         sys_init();                                //USB¹¦ÄÜ+IO¿Ú³õʼ»¯
  18.         usb_init();                                //usb¿â³õʼ»¯
  19.         EA = 1;                                        //CPU¿ª·ÅÖжϣ¬´ò¿ª×ÜÖжϡ£
  20.         
  21.         while(1)                //ËÀÑ­»·
  22.         {
  23.                 if( DeviceState != DEVSTATE_CONFIGURED )         //
  24.                         continue;
  25.                 if( bUsbOutReady )                                                               
  26.                 {
  27.                         usb_OUT_done();
  28.                         
  29.                         
  30.                 }
  31.                 P40 = 0;        //Èý¼«¹ÜÒý½ÅÊä³öµÍµçƽ
  32. //                P60 = 0;        //led4Òý½ÅÊä³öµÍµçƽ
  33. //    P61 = 0;        //led5Òý½ÅÊä³öµÍµçƽ
  34.       if( KEY1 == 0 )
  35.                         {
  36.         delay_ms(10);
  37.                                 if( KEY1 == 0 )
  38.                                 {
  39.                                         printf("??P32?? \r\n");
  40.           P60 = 0;
  41.                                 }        
  42.                         }
  43.       else
  44.                         {
  45.                            P60 = 1;
  46.                         }
  47. //                          if( KEY2 == 0 )
  48. //                        {
  49. //        delay_ms(10);
  50. //                                if( KEY2 == 0 )
  51. //                                {
  52. //                                        printf("??P33?? \r\n");
  53. //          P67 = 1;
  54. //                                }        
  55. //                        }
  56. //      else
  57. //                        {
  58. //                            P67 = 0;
  59. //                        }
  60.                           if( KEY2 == 0 )
  61.                         {
  62.         delay_ms(10);
  63.                                 if( KEY2 == 0 )
  64.                                 {
  65.                                         printf("??P33?? LED??\r\n");
  66.           P67 = !P67;
  67.           while(KEY2 == 0)
  68.                                         {
  69.                                        
  70.                                         }
  71.                                 }        
  72.                         }
  73.                         
  74.         }
  75. }
  76. void sys_init()                //º¯Êý¶¨Òå
  77. {
  78.     WTST = 0;  //ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
  79.     EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
  80.     CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È
  81.         P0M1 = 0x00;   P0M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  82.     P1M1 = 0x00;   P1M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  83.     P2M1 = 0x00;   P2M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  84.     P3M1 = 0x00;   P3M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  85.     P4M1 = 0x00;   P4M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  86.     P5M1 = 0x00;   P5M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  87.     P6M1 = 0x00;   P6M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  88.     P7M1 = 0x00;   P7M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  89.         
  90.     P3M0 = 0x00;
  91.     P3M1 = 0x00;
  92.    
  93.     P3M0 &= ~0x03;
  94.     P3M1 |= 0x03;
  95.     //ÉèÖÃUSBʹÓõÄʱÖÓÔ´
  96.     IRC48MCR = 0x80;    //ʹÄÜÄÚ²¿48M¸ßËÙIRC
  97.     while (!(IRC48MCR & 0x01));  //µÈ´ýʱÖÓÎȶ¨
  98.     USBCLK = 0x00;        //ʹÓÃCDC¹¦ÄÜÐèҪʹÓÃÕâÁ½ÐУ¬HID¹¦ÄܽûÓÃÕâÁ½ÐС£
  99.     USBCON = 0x90;
  100. }
  101. void delay_ms(u16 ms)
  102. {
  103.         u16 i;
  104.         do
  105.         {
  106.                 i = MAIN_Fosc/6000;
  107.                 while(--i);
  108.         }while(--ms);
  109. }
复制代码



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


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


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




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



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




  1. #include "COMM/stc.h"                //µ÷ÓÃÍ·Îļþ
  2. #include "COMM/usb.h"
  3. #define KEY1 P32
  4. #define KEY2 P33
  5. #define MAIN_Fosc 24000000UL
  6. char *USER_DEVICEDESC = NULL;
  7. char *USER_PRODUCTDESC = NULL;
  8. char *USER_STCISPCMD = "@STCISP#";
  9.         
  10. //sbit P40 = P4^0;        //Èý¼«¹Ü¿ØÖÆÒý½Å
  11. //sbit P60 = P6^0;        //LED¿ØÖÆÒý½Å
  12. //sbit P61 = P6^1;        //LED¿ØÖÆÒý½Å
  13. void sys_init();        //º¯ÊýÉùÃ÷
  14. void delay_ms(u16 ms);
  15. void main()                                        //³ÌÐò¿ªÊ¼ÔËÐеÄÈë¿Ú
  16. {
  17.         sys_init();                                //USB¹¦ÄÜ+IO¿Ú³õʼ»¯
  18.         usb_init();                                //usb¿â³õʼ»¯
  19.         EA = 1;                                        //CPU¿ª·ÅÖжϣ¬´ò¿ª×ÜÖжϡ£
  20.         
  21.         while(1)                //ËÀÑ­»·
  22.         {
  23.                 if( DeviceState != DEVSTATE_CONFIGURED )         //
  24.                         continue;
  25.                 if( bUsbOutReady )                                                               
  26.                 {
  27.                         usb_OUT_done();
  28.                         
  29.                         
  30.                 }
  31.                 P40 = 0;        //Èý¼«¹ÜÒý½ÅÊä³öµÍµçƽ
  32. //                P60 = 0;        //led4Òý½ÅÊä³öµÍµçƽ
  33. //    P61 = 0;        //led5Òý½ÅÊä³öµÍµçƽ
  34.       if( KEY1 == 0 )
  35.                         {
  36.         delay_ms(10);
  37.                                 if( KEY1 == 0 )
  38.                                 {
  39.                                         printf("??P32?? \r\n");
  40.           P60 = 0;
  41.                                 }        
  42.                         }
  43.       else
  44.                         {
  45.                            P60 = 1;
  46.                         }
  47. //                          if( KEY2 == 0 )
  48. //                        {
  49. //        delay_ms(10);
  50. //                                if( KEY2 == 0 )
  51. //                                {
  52. //                                        printf("??P33?? \r\n");
  53. //          P67 = 1;
  54. //                                }        
  55. //                        }
  56. //      else
  57. //                        {
  58. //                            P67 = 0;
  59. //                        }
  60.                           if( KEY2 == 0 )
  61.                         {
  62.         delay_ms(10);
  63.                                 if( KEY2 == 0 )
  64.                                 {
  65.           while(KEY2 == 0)
  66.                                         {
  67.                                        
  68.                                         }
  69.                                         printf("??P33?? LED??\r\n");
  70.           P67 = !P67;
  71.                                 }        
  72.                         }
  73.                         
  74.         }
  75. }
  76. void sys_init()                //º¯Êý¶¨Òå
  77. {
  78.     WTST = 0;  //ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
  79.     EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
  80.     CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È
  81.         P0M1 = 0x00;   P0M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  82.     P1M1 = 0x00;   P1M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  83.     P2M1 = 0x00;   P2M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  84.     P3M1 = 0x00;   P3M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  85.     P4M1 = 0x00;   P4M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  86.     P5M1 = 0x00;   P5M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  87.     P6M1 = 0x00;   P6M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  88.     P7M1 = 0x00;   P7M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú
  89.         
  90.     P3M0 = 0x00;
  91.     P3M1 = 0x00;
  92.    
  93.     P3M0 &= ~0x03;
  94.     P3M1 |= 0x03;
  95.     //ÉèÖÃUSBʹÓõÄʱÖÓÔ´
  96.     IRC48MCR = 0x80;    //ʹÄÜÄÚ²¿48M¸ßËÙIRC
  97.     while (!(IRC48MCR & 0x01));  //µÈ´ýʱÖÓÎȶ¨
  98.     USBCLK = 0x00;        //ʹÓÃCDC¹¦ÄÜÐèҪʹÓÃÕâÁ½ÐУ¬HID¹¦ÄܽûÓÃÕâÁ½ÐС£
  99.     USBCON = 0x90;
  100. }
  101. void delay_ms(u16 ms)
  102. {
  103.         u16 i;
  104.         do
  105.         {
  106.                 i = MAIN_Fosc/6000;
  107.                 while(--i);
  108.         }while(--ms);
  109. }
复制代码

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





























.


按键.rar

101.5 KB, 下载次数: 46

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2023-12-05 19:37:53

3

主题

324

回帖

363

积分

禁止发言

积分
363
发表于 2023-11-9 12:39:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-4 05:51 , Processed in 0.177486 second(s), 75 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表