找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6215|回复: 18
收起左侧

MS83F1402单片机PIC兼容的芯片-6脚数码管测试程序

[复制链接]
ID:136083 发表于 2021-1-3 18:18 | 显示全部楼层 |阅读模式
在网上找到几个很便宜很便宜的移动电源板子,啥资料都么有,买来换上单片机折腾一下。先把6脚数码管搞定。,压缩包是这次折腾的资料。
51hei.png 51hei.png 51hei.png

单片机源程序如下:
  1. //                            MS83F1402的充电器方案应用
  2. //                                       ----------------   
  3. // VDD            ------------|1(VDD)  (GND)14|---------  GND
  4. //_LEVEL        ------------|2(RA7)    (PA0)13|---------  DBG_CLK    A_ADC  
  5. // _STAT        ------------|3(PA6)    (PA1)12|---------- DBG_DAT    B+_ADC
  6. //_BST           ------------|4(PA4)    (PA2)11|-------------  LL1           
  7. // LL6             ------------|5(PC3)    (PA3)10|-------------  LL2
  8. // LL5             ------------|6(PC2)    (PC0)09|-------------  LL3
  9. // _KEY          ------------|7(PC4)    (PC1)08|-------------  LL4
  10. //                                      ----------------

  11. #include "SYSCFG.h"

  12. //宏定义
  13. #define OSC_16M    0x70
  14. #define OSC_8M      0x60
  15. #define OSC_4M      0x50
  16. #define OSC_2M      0x40
  17. #define OSC_1M      0x30
  18. #define OSC_500K   0x20
  19. #define OSC_250K   0x10
  20. #define OSC_32K     0x00

  21. #define WDT_256K   0x80
  22. #define WDT_32K     0x00


  23. //-----------------------------------//
  24. //GPIO功能

  25. //PA7         PA6         PA5        PA4        PA3       PA2        PA1           PA0       //0-输出   1-输入
  26. //_LEVEL    _STAT       \         _BST       LL2        LL1         B+_ADC    A_ADC  //0b11011111    0xdf

  27. //PC7        PC6          PC6        PC4       PC3       PC2        PC1           PC0
  28. //\                \             \        _KEY        LL6        LL5         LL4            LL3      //0b00001111    0x0f

  29. #define  _KEY          PC4     //平时为高电平,低电平触发,复用功能为PWM3
  30. #define  _BST          PA4     //
  31. #define  _STAT        PA6     //
  32. #define  _LEVEL       PA7     //充电芯的状态指示灯

  33. //6脚数码管IO
  34. #define SetPortIn()                { TRISA = 0xdf; PORTA = 0x00; TRISC = 0x0f; PORTC = 0x00;}//高阻态

  35. #define  LL1  PA2
  36. #define  LL2  PA3
  37. #define  LL3  PC0
  38. #define  LL4  PC1
  39. #define  LL5  PC2
  40. #define  LL6  PC3

  41. //-----------------------------------//
  42. //函数名称:DelayUs
  43. //功能:   短延时函数 --16M-2T--大概快1%左右.
  44. //输入参数:Time 延时时间长度 延时时长Time Us
  45. //返回参数:无
  46. void DelayUs(unsigned char Time)
  47. {
  48.         do{
  49.                     NOP();
  50.             --Time;
  51.         }while( Time > 0 );
  52. }                  

  53. //函数名称:DelayMs
  54. //功能:    短延时函数
  55. //输入参数:Time 延时时间长度 延时时长Time ms
  56. //返回参数:无
  57. void DelayMs(unsigned char t)
  58. {
  59.         unsigned char a,b;
  60.         for(a=0;a<t;a++)
  61.         {
  62.                 for(b=0;b<5;b++)
  63.                 {
  64.                          DelayUs(197);         //快1%
  65.             CLRWDT();
  66.                 }
  67.         }
  68. }



  69. //-----------------------------------//

  70. //功能:  单片机上电始化
  71. //函数名:_INIT
  72. //功能:上电器件初始化
  73. //        OSCCON寄存器    Bit7   >>> LFMOD=0       >>> WDT振荡器频率=32KHz
  74. //                            Bit6:4 >>> IRCF[2:0]=101 >>> 内部RC频率=4MHz
  75. //                            Bit0   >>> SCS=1         >>> 系统时钟选择为内部振荡器
  76. //        MSCKCON寄存器  bit6   >>>  VREG_OE=0    >>> 禁止稳压输出
  77. //                            Bit5  >>> T2CKSRC=0  >>> Timer2时钟源为系统时钟
  78. //                            Bit4  >>> SLVREN=0   >>> 关闭LVR
  79. //        INTCON寄存器      设为0,禁止所有中断
  80. // CMCON0寄存器0B00000111; 关闭比较器,CxIN为数字IO口
  81. // ANSEL寄存器        设为0,关闭中断引脚模拟输入功能,也就是把相应位设为0,置为数字IO
  82. // WDTCON寄存器0B00010001;看门狗定时器预分配比  datasheet 第39页
  83. //                            7:5  N/A
  84. //                            4:1  WDTPS[3:0]   1000 1:8192
  85. //                                    0  SWDTEN  软件打开/关闭看门狗定时器:
  86. //                                    1 =  打开
  87. //                                    0 =  关闭
  88. #define _INIT()\
  89. {\
  90.         OSCCON = WDT_32K|OSC_16M|0x00;\
  91.         MSCKCON = 0B00000000;\
  92.         INTCON = 0B00000000;\
  93.     CMCON0 = 0B00000111;\
  94.     ANSEL = 0B00000000;\
  95.    }

  96. //功能:端口初始化
  97. //MS83F的IO口初始化可分为:
  98. //1.数字输出
  99. //2.数字输入
  100. //3.模拟输出
  101. //4.模拟输入
  102. //相关寄存器有:
  103. //1.CMCON0
  104. //2.ANSEL
  105. //3.TRISA和TIRSC
  106. //4.PORTA和PORTC
  107. //5.WPUA、OPTION和WPUC(OPTION的BIT7为PORTA口内部上拉总闸)
  108. //6.WPD
  109. //需要特别注意的是:CMOCN0上电模式是0,也就是对应的IO口为模拟口
  110. //ANSEL上电复位默认为0xFF,也就是所有AD口都默认为模拟口
  111. //这两个寄存器一般是要初始化的,尤其是需要把IO口设置为数字口
  112. //因此程序中有CMCON0=0x07和ANSEL=0 这点很多人会忽略到
  113. void  GPIO_INIT(void)
  114. {

  115.     CMCON0 |= 0B00000111;              //关闭比较器,CxIN为数字IO口
  116.     ANSEL |= 0B00000000;            //所有IO口都为数字IO
  117.    
  118.         
  119.         TRISA = 0B11011111;       //PA输入输出 0-输出 1-输入  
  120.     PORTA = 0B00000000;        
  121.         WPUA = 0B00000000;       //PA端口上拉控制 1-开上拉 0-关上拉
  122.                                               //PA0,PA1模拟输入  BATT_ADC
  123.                                               //PA2  LL1
  124.                                               //PA3  LL2
  125.                                               //PA4  _BST
  126.                                               //PA5在芯片内部
  127.                                               //PA6  _STAT
  128.                                               //PA7  _LEVEL                                 
  129.         
  130.         TRISC = 0B00001111;                 //PC输入输出 0-输出 1-输入
  131.     PORTC = 0B00000000;
  132.     WPUC = 0B00010000;      //PC端口上拉控制 1-开上拉 0-关上拉
  133.      
  134.                                              //PC0  LL3
  135.                                              //PC1  LL4
  136.                                              //PC2  LL5
  137.                                              //PC3  LL6
  138.                                              //PC4  KEY
  139.                                              //SOP14封装无PC5 PC6 PC7引脚

  140.         OPTION = 0B00000000;         //Bit3=1 WDT MODE,PS=000=1:1 WDT RATE
  141.                                                                                   //Bit7(PAPU)=0 ENABLED PULL UP PA
  142.                                              
  143. //注意,各个引脚要有确定的状态

  144. _KEY = 1;       //  PC4      //平时为高电平,低电平触发,复用功能为PWM3
  145. _BST = 0;       //  PA4     
  146. _STAT = 0;     //  PA6      //休眠的时候这里要设置为1
  147. _LEVEL = 0;    //  PA7      //充电状态指示灯
  148.                               
  149. }

  150. //=========================================//

  151. //函数名:  main
  152. //功能:  主函数
  153. void main()
  154. {
  155.     _INIT();//系统初始化
  156.      CLRWDT();     
  157.          GPIO_INIT(); //GPIO初始化

  158.         while( 1 )
  159.         {   
  160.         
  161.         SetPortIn();
  162.         TRISA &= ~( 1 << 2); //将PA2设为输出 LL1
  163.         TRISA &= ~( 1 << 3); //将PA3设为输出 LL2
  164.         LL1 = 1;  //1A
  165.         LL2 = 0;  
  166.         DelayUs(500);
  167.         LL1 = 0;
  168.         LL2 = 1; //2A
  169.         DelayUs(500);
  170.         
  171.         SetPortIn();
  172.         TRISA &= ~( 1 << 2); //将PA2 设为输出  LL1
  173.         TRISC &= ~( 1<< 0);  //将PC0 设为输出  LL3
  174.         LL1 = 1;
  175.         LL3 = 0;  //1B
  176.         DelayUs(500);
  177.         LL1 = 0;
  178.         LL3 = 1; //2B
  179.         DelayUs(500);

  180.         SetPortIn();
  181.         TRISA &= ~( 1 << 2); //将PA2 设为输出  LL1
  182.         TRISC &= ~( 1<< 1);  //将PC1 设为输出  LL4
  183.         LL1 = 1;
  184.         LL4 = 0;  //1C
  185.         DelayUs(500);
  186.         LL1 = 0;
  187.         LL4 = 1; //2C
  188.         DelayUs(500);
  189.         
  190.         SetPortIn();
  191.         TRISA &= ~( 1 << 2); //将PA2 设为输出  LL1
  192.         TRISC &= ~( 1<< 2);  //将PC2 设为输出  LL5
  193.         LL1 = 1;
  194.         LL5 = 0;  //1D
  195.         DelayUs(500);
  196.         LL1 = 0;
  197.         LL5 = 1; //2D
  198.         DelayUs(500);
  199.         
  200.         SetPortIn();
  201.         TRISA &= ~( 1 << 2); //将PA2 设为输出  LL1
  202.         TRISC &= ~( 1<< 3);  //将PC3 设为输出  LL6
  203.         LL1 = 1;
  204.         LL6 = 0;  //1E
  205.         DelayUs(500);
  206.         LL1 = 0;
  207.         LL6 = 1; //2E
  208.         DelayUs(500);
  209.         
  210. //----------------------------------------------------------//
  211.         SetPortIn();
  212.         TRISA &= ~( 1 << 3); //将PA3设为输出 LL2
  213.         TRISC &= ~( 1<< 0);  //将PC0 设为输出  LL3
  214.         LL2 = 1;
  215.         LL3 = 0;  //??
  216.         DelayUs(500);
  217.         LL2 = 0;
  218.         LL3 = 1; //2F
  219.         DelayUs(500);

  220.         SetPortIn();
  221.         TRISA &= ~( 1 << 3); //将PA3设为输出 LL2
  222.         TRISC &= ~( 1<< 1);  //将PC1 设为输出  LL4
  223.         LL2 = 1;
  224.         LL4 = 0;  //OUT
  225.         DelayUs(500);
  226.         LL2 = 0;
  227.         LL4 = 1; //2G
  228.         DelayUs(500);
  229.         
  230.         SetPortIn();
  231.         TRISA &= ~( 1 << 3); //将PA3设为输出 LL2
  232.         TRISC &= ~( 1<< 2);  //将PC2 设为输出  LL5
  233.         LL2 = 1;
  234.         LL5 = 0;  //5.0V 1.0A
  235.         DelayUs(500);
  236.         LL2 = 0;
  237.         LL5 = 1; //1F
  238.         DelayUs(500);
  239.         
  240.         SetPortIn();
  241.         TRISA &= ~( 1 << 3); //将PA3设为输出 LL2
  242.         TRISC &= ~( 1<< 3);  //将PC3 设为输出  LL6
  243.         LL2 = 1;
  244.         LL6 = 0;  //??
  245.         DelayUs(500);
  246.         LL2 = 0;
  247.         LL6 = 1; //1G
  248.         DelayUs(500);
  249.         
  250. //----------------------------------------------------------//
  251.         SetPortIn();
  252.         TRISC &= ~( 1<< 0);  //将PC0 设为输出  LL3
  253.         TRISC &= ~( 1<< 1);  //将PC1 设为输出  LL4
  254.         LL3 = 1;
  255.         LL4 = 0;  //5.0V 2.0A
  256.         DelayUs(500);
  257.         LL3 = 0;
  258.         LL4 = 1; //3B
  259.         DelayUs(500);
  260.         
  261.         SetPortIn();
  262.         TRISC &= ~( 1<< 0);  //将PC0 设为输出  LL3
  263.         TRISC &= ~( 1<< 2);  //将PC2 设为输出  LL5
  264.         LL3 = 1;
  265.         LL5 = 0;  //IN
  266.         DelayUs(500);
  267.         LL3 = 0;
  268.         LL5 = 1; //3C
  269.         DelayUs(500);
  270.         
  271.         SetPortIn();
  272.         TRISC &= ~( 1<< 0);  //将PC0 设为输出  LL3
  273.         TRISC &= ~( 1<< 3);  //将PC3 设为输出  LL6
  274.         LL3 = 1;
  275.         LL6 = 0;  //??
  276.         DelayUs(500);
  277.         LL3 = 0;
  278.         LL6 = 1; //%
  279.         DelayUs(500);
  280.             
  281. //----------------------------------------------------------//

  282.         SetPortIn();
  283.         TRISC &= ~( 1<< 1);  //将PC1 设为输出  LL4
  284.         TRISC &= ~( 1<< 2);  //将PC2 设为输出  LL5
  285.         LL4 = 1;
  286.         LL5 = 0;  //??
  287.         DelayUs(500);
  288.         LL4 = 0;
  289.         LL5 = 1; //??
  290.         DelayUs(500);
  291.         
  292.         SetPortIn();
  293.         TRISC &= ~( 1<< 1);  //将PC1 设为输出  LL4
  294.         TRISC &= ~( 1<< 3);  //将PC3 设为输出  LL6
  295.         LL4 = 1;
  296.         LL6 = 0;  //??
  297.         DelayUs(500);
  298.         LL4 = 0;
  299.         LL6 = 1; //??
  300.         DelayUs(500);
  301.         
  302. //----------------------------------------------------------//
  303.         SetPortIn();
  304.         TRISC &= ~( 1<< 2);  //将PC2 设为输出  LL5
  305.         TRISC &= ~( 1<< 3);  //将PC3 设为输出  LL6
  306.         LL5 = 1;
  307.         LL6 = 0;  //??
  308.         DelayUs(500);
  309.         LL5 = 0;
  310.         LL6 = 1; //??
  311.         DelayUs(500);

  312.     }

  313. }
  314.         
复制代码

以上资料51hei提供下载:
6脚数码管测试.zip (355.97 KB, 下载次数: 49)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:136083 发表于 2021-1-8 01:04 | 显示全部楼层
今天修改了LED的测试,可以动态显示199了,附件是源码。

_LED_T.zip

1.86 KB, 下载次数: 31, 下载积分: 黑币 -5

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:136083 发表于 2021-1-8 01:07 | 显示全部楼层
  1. 今天修改了LED的显示,可以动态显示0-199了,源码如下:

  2. #include "SYSCFG.h"
  3. //宏定义
  4. #define OSC_16M    0x70
  5. #define OSC_8M      0x60
  6. #define OSC_4M      0x50
  7. #define OSC_2M      0x40
  8. #define OSC_1M      0x30
  9. #define OSC_500K   0x20
  10. #define OSC_250K   0x10
  11. #define OSC_32K     0x00

  12. #define WDT_256K   0x80
  13. #define WDT_32K     0x00
  14. /************************************************************************************/

  15. #define uchar unsigned char
  16. #define uint unsigned int

  17. uint TIME_SS = 000;
  18. unsigned int TC = 0;
  19. unsigned int x = 100; //延时时间

  20. uchar _DELAY = 0;

  21. void delay ( uint a )//定时器延时
  22. {
  23.     while ( a != 0 )
  24.     {
  25.           while( 7 == _DELAY );
  26.       _DELAY = 0;       
  27.       a--;       
  28.     }                    
  29. }


  30. #define _INIT()\
  31. {\
  32.         OSCCON = WDT_32K|OSC_16M|0x00;\
  33.         MSCKCON = 0B00000000;\
  34.         INTCON = 0B00000000;\
  35.     CMCON0 = 0B00000111;\
  36.     ANSEL = 0B00000000;\
  37.    }  
  38.    
  39. //6脚数码管IO定义

  40. #define SetPortIn()                { TRISA |= 0xdf; PORTA |= 0x00; TRISC |= 0x0f; PORTC |= 0x00;}//高阻态

  41. #define  LL1  PA2
  42. #define  LL2  PA3
  43. #define  LL3  PC0
  44. #define  LL4  PC1
  45. #define  LL5  PC2
  46. #define  LL6  PC3


  47. #define _1A()  { SetPortIn(); TRISA &= ~( 1 << 2 ); TRISA &= ~( 1 << 3 );  LL1 = 1; LL2 = 0; delay(x); } //1A
  48. #define _1B()  { SetPortIn(); TRISA &= ~( 1 << 2 ); TRISC &= ~( 1 << 0 );  LL1 = 1; LL3 = 0; delay(x); } //1B
  49. #define _1C()  { SetPortIn(); TRISA &= ~( 1 << 2 ); TRISC &= ~( 1 << 1 );  LL1 = 1; LL4 = 0; delay(x); } //1C
  50. #define _1D()  { SetPortIn(); TRISA &= ~( 1 << 2 ); TRISC &= ~( 1 << 2 );  LL1 = 1; LL5 = 0; delay(x); } //1D
  51. #define _1E()  { SetPortIn(); TRISA &= ~( 1 << 2 ); TRISC &= ~( 1 << 3 );  LL1 = 1; LL6 = 0; delay(x); } //1E
  52. #define _1F()  { SetPortIn(); TRISA &= ~( 1 << 3 ); TRISC &= ~( 1 << 2 );  LL2 = 0; LL5 = 1; delay(x); } //1F
  53. #define _1G()  { SetPortIn(); TRISA &= ~( 1 << 3 ); TRISC &= ~( 1 << 3 );  LL2 = 0; LL6 = 1; delay(x); } //1G

  54. #define _2A()  { SetPortIn(); TRISA &= ~( 1 << 2 ); TRISA &= ~( 1 << 3 );  LL1 = 0; LL2 = 1; delay(x); } //2A
  55. #define _2B()  { SetPortIn(); TRISA &= ~( 1 << 2 ); TRISC &= ~( 1 << 0 );  LL1 = 0; LL3 = 1; delay(x); } //2B
  56. #define _2C()  { SetPortIn(); TRISA &= ~( 1 << 2 ); TRISC &= ~( 1 << 1 );  LL1 = 0; LL4 = 1; delay(x); } //2C
  57. #define _2D()  { SetPortIn(); TRISA &= ~( 1 << 2 ); TRISC &= ~( 1 << 2 );  LL1 = 0; LL5 = 1; delay(x); } //2D
  58. #define _2E()  { SetPortIn(); TRISA &= ~( 1 << 2 ); TRISC &= ~( 1 << 3 );  LL1 = 0; LL6 = 1; delay(x); } //2E
  59. #define _2F()  { SetPortIn(); TRISA &= ~( 1 << 3 ); TRISC &= ~( 1 << 0 );  LL2 = 0; LL3 = 1; delay(x); } //2F
  60. #define _2G()  { SetPortIn(); TRISA &= ~( 1 << 3 ); TRISC &= ~( 1 << 1 );  LL2 = 0; LL4 = 1; delay(x); } //2G

  61. #define _3B()  { SetPortIn(); TRISC &= ~( 1 << 0 ); TRISC &= ~( 1 << 1 );  LL3 = 0; LL4 = 1; delay(x); } //3B
  62. #define _3C()  { SetPortIn(); TRISC &= ~( 1 << 0 ); TRISC &= ~( 1 << 2 );  LL3 = 0; LL5 = 1; delay(x); } //3C

  63. #define _IN()     { SetPortIn(); TRISC &= ~( 1 << 0 ); TRISC &= ~( 1 << 2 );  LL3 = 1; LL5 = 0; delay(x*2); } //IN
  64. #define _OUT()  { SetPortIn(); TRISA &= ~( 1 << 3 ); TRISC &= ~( 1 << 1 );  LL2 = 1; LL4 = 0; delay(x*2); } //OUT
  65. #define _AA()     { SetPortIn(); TRISC &= ~( 1 << 0 ); TRISC &= ~( 1 << 3 );  LL3 = 0; LL6 = 1; delay(x*2); } //%
  66. #define _VA1()  { SetPortIn(); TRISA &= ~( 1 << 3 ); TRISC &= ~( 1 << 2 );  LL2 = 1; LL5 = 0; delay(x*3); } //5.0V 1.0A
  67. #define _VA2()  { SetPortIn(); TRISC &= ~( 1 << 0 ); TRISC &= ~( 1 << 1 );  LL3 = 1; LL4 = 0; delay(x*3); } //5.0V 2.0A


  68. //================================//
  69. void DG1(int a)
  70. {
  71. switch(a)
  72.    {
  73.      case 0: { _1A(); _1B(); _1C(); _1D(); _1E(); _1F();  break; }
  74.      case 1: { _1B(); _1C(); break;}
  75.      case 2: { _1A(); _1B(); _1D(); _1E();  _1G(); break; }              
  76.      case 3: { _1A(); _1B(); _1C(); _1D();  _1G(); break; }
  77.      case 4: { _1B(); _1C(); _1F(); _1G(); break; }
  78.      case 5: { _1A(); _1C(); _1D(); _1F(); _1G(); break; }
  79.      case 6: { _1A(); _1C(); _1D(); _1E(); _1F(); _1G(); break; }
  80.      case 7: { _1A(); _1B(); _1C(); break;  }
  81.      case 8: { _1A(); _1B(); _1C(); _1D(); _1E(); _1F(); _1G(); break; }
  82.      case 9: { _1A(); _1B(); _1C(); _1D(); _1F(); _1G(); break;}
  83.      default: break;
  84.    }
  85. }

  86. void DG2(int a)
  87. {
  88. switch(a)
  89.    {
  90.      case 0: { _2A(); _2B(); _2C(); _2D(); _2E(); _2F();  break; }
  91.      case 1: { _2B(); _2C(); break;}
  92.      case 2: { _2A(); _2B(); _2D(); _2E(); _2G(); break; }              
  93.      case 3: { _2A(); _2B(); _2C(); _2D(); _2G(); break; }
  94.      case 4: { _2B(); _2C(); _2F(); _2G(); break; }
  95.      case 5: { _2A(); _2C(); _2D(); _2F(); _2G(); break; }
  96.      case 6: { _2A(); _2C(); _2D(); _2E(); _2F(); _2G(); break; }
  97.      case 7: { _2A(); _2B(); _2C(); break;  }
  98.      case 8: { _2A(); _2B(); _2C(); _2D(); _2E(); _2F(); _2G(); break; }
  99.      case 9: { _2A(); _2B(); _2C(); _2D(); _2F(); _2G(); break; }
  100.      default: break;
  101.    }
  102. }
  103. void DG3(int a)
  104. {
  105. switch(a)
  106.    {
  107.      case 1: { _3B(); _3C(); break; }
  108.      default: break;
  109.   
  110.    }
  111. }


  112. //========================================
  113. //函数名:TIMER0_INIT
  114. //功能:Timer0初始化
  115. //========================================
  116. void TIMER0_INIT(void)
  117. {
  118.         OPTION = 0B00000111;       
  119.   T0IF = 0;
  120.   TMR0 = 6;                     
  121. }

  122. //========================================
  123. //函数名:ENABLE_INTERRUPT
  124. //功能:开启所需中断
  125. //========================================
  126. void ENABLE_INTERRUPT(void)
  127. {
  128.         T0IE = 1;                       //使能TIMER0中断
  129.         GIE = 1;                        //开启总中断
  130. }



  131. void main (void) //主程序
  132. {
  133.     _INIT();
  134.    
  135.         TRISA = 0B11011111;       //PA输入输出 0-输出 1-输入  
  136.     PORTA = 0B00000000;       
  137.         WPUA = 0B00000000;       //PA端口上拉控制 1-开上拉 0-关上拉
  138.                                               //PA0,PA1模拟输入  BATT_ADC
  139.                                               //PA2  LL1
  140.                                               //PA3  LL2
  141.                                               //PA4  _BST
  142.                                               //PA5在芯片内部
  143.                                               //PA6  _STAT
  144.                                               //PA7  _LEVEL                                 
  145.        
  146.         TRISC = 0B00001111;                 //PC输入输出 0-输出 1-输入
  147.     PORTC = 0B00000000;
  148.     WPUC = 0B00010000;      //PC端口上拉控制 1-开上拉 0-关上拉
  149.      
  150.                                              //PC0  LL3
  151.                                              //PC1  LL4
  152.                                              //PC2  LL5
  153.                                              //PC3  LL6
  154.                                              //PC4  KEY
  155.                                              //SOP14封装无PC5 PC6 PC7引脚

  156.         OPTION = 0B00000000;         //Bit3=1 WDT MODE,PS=000=1:1 WDT RATE
  157.                                                                                   //Bit7(PAPU)=0 ENABLED PULL UP PA
  158.                                              
  159.     TIMER0_INIT();
  160.     ENABLE_INTERRUPT();
  161.         while (1)
  162.     {
  163.         _IN();
  164.         _OUT();
  165.         _AA();
  166.         _VA1();
  167.         _VA2();
  168.         DG3(TIME_SS/100);
  169.         DG2(TIME_SS/10%10);
  170.         DG1(TIME_SS%10);
  171.     }
  172. }       


  173. //========================================
  174. //函数名:interrupt ISR
  175. //功能:中断服务函数
  176. //========================================
  177. void interrupt ISR(void)
  178. {
  179.         if(T0IE&&T0IF)
  180.         {

  181.     _DELAY ++;
  182.                 TC ++;                  
  183.          if( TC > 99 )
  184.                         {               
  185.                TC = 0;              
  186.                        TIME_SS++;           
  187.                if( TIME_SS > 199 )
  188.                {   
  189.                    TIME_SS = 0;         
  190.                                 }  
  191.                         }  

  192.                 T0IF = 0; //清溢出标志
  193.                 TMR0 = 6;//重装定时初值
  194.             

  195.         }
  196. }

复制代码
回复

使用道具 举报

ID:71535 发表于 2021-1-13 08:24 | 显示全部楼层
支持楼主不断地探索新用法。手边也收了几个没资料的板子,跟风学习学习,坚持到底。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:285526 发表于 2021-3-24 04:30 | 显示全部楼层
我来自巴基斯坦,请帮助我,
我想用写入的PIC16F676的固件来烧制MS83F1402。
通过提供用MS83F1402或MS83F1602编写的伏安固件可以提供一些帮助。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:285526 发表于 2021-3-25 14:00 | 显示全部楼层
请看所附图片
有人帮助使用LM358在单个MCU MS83F1602上生产伏安表

回复

使用道具 举报

ID:285526 发表于 2021-3-25 14:02 | 显示全部楼层
我可以通过提供电路图或PCB来帮助您吗
  6脚数码管测试.zip
回复

使用道具 举报

ID:285526 发表于 2021-3-25 15:46 | 显示全部楼层
有谁能给我这个电路的顶部和底部清晰的图片吗
或者
电路原理图
我想为所有论坛成员搭建PCB

作者出色的工作,可以从www点origin-gd点com  获得有关如何使用廉价MCU的知识
在我以前的文章中,我提供了MS83xxxx MCU的必要数据。

感谢作者。
回复

使用道具 举报

ID:285526 发表于 2021-3-26 03:02 | 显示全部楼层
多亏了其他。

我正在介绍Volt_Ampere PCB设计。
请帮助任何人制作固件MS83F1602。 SOIC16。
我将送他/他一件皮夹克作为礼物。
回复

使用道具 举报

ID:285526 发表于 2021-3-29 10:14 | 显示全部楼层
http://www.51hei.com/bbs/dpj-200954-1.html
友人
我需要您为其制作固件的该硬件的电路图。
管理员:-请建议作者共享PCB图片或硬件电路图。
回复

使用道具 举报

ID:136083 发表于 2021-9-20 09:39 | 显示全部楼层
umer94 发表于 2021-3-29 10:14
http://www.51hei.com/bbs/dpj-200954-1.html
友人
我需要您为其制作固件的该硬件的电路图。

假期后上班了,我一直没有时间画这个的硬件电路图。感谢您的支持了!
回复

使用道具 举报

ID:805324 发表于 2021-10-22 11:43 | 显示全部楼层
楼主的LED扫描浪费了很多程序啊,置输入可以调用一次就可以了,后面的输出也是,浪费了很多重复的程序空间
回复

使用道具 举报

ID:71535 发表于 2021-10-22 21:00 | 显示全部楼层
micle.zhou 发表于 2021-10-22 11:43
楼主的LED扫描浪费了很多程序啊,置输入可以调用一次就可以了,后面的输出也是,浪费了很多重复的程序空间

期待高手的分享指点迷津
回复

使用道具 举报

ID:285526 发表于 2022-2-28 03:35 | 显示全部楼层
http://www.51hei.com/bbs/dpj-200954-1.html

请作者您能否分享此硬件的清晰图片。
要么
共享此硬件的型号及其使用位置。

我将为此制作它的图表和pcb,并分享给论坛成员
回复

使用道具 举报

ID:136083 发表于 2022-3-1 22:59 | 显示全部楼层
本帖最后由 desig 于 2022-3-2 22:01 编辑

感谢各位支持,附件是配套的硬件资料

z12_1_3_贴片图.pdf

70.18 KB, 下载次数: 9, 下载积分: 黑币 -5

z12_1_3_原理图.pdf

225.83 KB, 下载次数: 14, 下载积分: 黑币 -5

z12_1_3_pcbdoc.zip

363.38 KB, 下载次数: 11, 下载积分: 黑币 -5

z12_1_3_原理图.zip

10.94 KB, 下载次数: 10, 下载积分: 黑币 -5

回复

使用道具 举报

ID:136083 发表于 2022-3-2 22:03 | 显示全部楼层
umer94 发表于 2021-3-25 15:46
有谁能给我这个电路的顶部和底部清晰的图片吗
或者
电路原理图

我已经发出硬件资料在本帖的回复楼层中,如有需要,请收下。
回复

使用道具 举报

ID:136083 发表于 2022-3-2 22:05 | 显示全部楼层
umer94 发表于 2022-2-28 03:35
http://www.51hei.com/bbs/dpj-200954-1.html

请作者您能否分享此硬件的清晰图片。

上班后一直没时间上论坛,现已发布相关的硬件资源,在本帖回复楼层中,您可以参考。
回复

使用道具 举报

ID:285526 发表于 2022-11-15 09:01 | 显示全部楼层
非常感谢您的分享。
我正在遭受covid 19,
今天看了你的分享,
我希望它会帮助我。
回复

使用道具 举报

ID:285526 发表于 2023-1-3 03:35 | 显示全部楼层
朋友,
干得好,
你能在这个 MS83f1602 芯片上做伏安表吗,或者如果你有任何伏安项目,请在这里分享。
如果你需要我的帮助来制作这个项目的 pcb,我会提供我自己。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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