久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3062|回復: 3
打印 上一主題 下一主題
收起左側

有大佬有義隆單片機的em78P153B,c例程嗎,請求分享一下

[復制鏈接]
跳轉到指定樓層
#
ID:609524 發表于 2021-3-11 22:05 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
100黑幣
如題

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

板凳
ID:332997 發表于 2022-1-13 11:18 | 只看該作者

  1. //*****************************************************************************
  2. //
  3. //*****************************************************************************
  4. //MCU:EM78P153B
  5. //Oscillator:IRC 4MHz        2Clock
  6. //WDT:enable
  7. //編譯軟件:eUIDE version 1.07.32.23
  8. //按鍵:短按設置功率值,長按確定所設的值,同時蜂鳴器響0.5s
  9. //數碼管顯示30~90,共7檔功率值,若檢測功率值不在所設的值附近,蜂鳴器響紅燈亮。正常則蜂鳴器不響綠燈亮
  10. //-----------------------------------------------------------------------------
  11. #include "EM78P372N.H"       //EM78P372N的頭文件
  12. #define        DISI()        _asm{disi}
  13. #define        WDTC()        _asm{wdtc}
  14. #define        NOP()        _asm{nop}
  15. #define        ENI()        _asm{eni}
  16. #define        SLEP()        _asm{slep}
  17. #define uchar        unsigned char

  18. #define KEY                P66
  19. #define        LED_R        P60
  20. #define        LED_G        P61
  21. #define BUZZER        P67
  22. #define        D1                P50
  23. #define        D2                P51
  24. #define        D3                P52
  25. #define        D4                P53
  26. #define        D5                P54
  27. #define        D6                P55


  28. bit f_ad;
  29. bit f_pwm;
  30. bit f_p_pwm;
  31. bit f_key_short;
  32. bit f_key_lock;
  33. bit f_led_change;        //
  34. bit f_buz;
  35. bit f_en;
  36. bit f_set;
  37. bit f_set_over;

  38. uchar check_ad_cnt;
  39. uchar ad_channel;

  40. uchar set_value;
  41. unsigned short ad_value;

  42. uchar cnt_led;
  43. uchar cnt_bai;
  44. uchar cnt_shi;
  45. uchar cnt_ge;

  46. unsigned short cnt_pwm;
  47. unsigned char cnt_key;
  48. unsigned char cnt_key1;

  49. uchar set_time=0;
  50. uchar set_time1=0;
  51. //-------------------------------------------------------------------
  52. extern int IntVecIdx; //occupied 0x10:rpage 0
  53. //----------------------------------------------
  54. void Sys_init(void);
  55. void Gpio_init(void);
  56. void Timer_init(void);
  57. void Sleep(void);
  58. void Check_ad(void);
  59. void Check_key(void);
  60. void Led_pro(void);
  61. void Adc_init(void);
  62. void Pwm_init(void);
  63. void delay_10ms(void);
  64. void AD_CALI_P(void);
  65. void Pro_buzzer(void);
  66. //---------------------------------------------
  67. void main()
  68. {
  69.         WDTC();
  70.         DISI();
  71. //--------------------------------------       
  72.         cnt_pwm=0;
  73.         cnt_key=0;
  74.         f_set=0;
  75.         f_set_over=0;
  76.         f_ad=0;
  77.         f_pwm=0;
  78.         f_p_pwm=0;
  79.         f_key_short=0;
  80.         f_key_lock=0;
  81.         f_led_change=0;       
  82.         check_ad_cnt=0;
  83.         ad_channel=0;
  84.         set_value=0;
  85.         ad_value=0;
  86.         cnt_led=0;
  87.         cnt_bai=0;
  88.         cnt_shi=0;
  89.         cnt_ge=0;
  90. //-------------------------------------
  91.         Sys_init();//SCR=0X7F;                        //選擇4MHz
  92.         Gpio_init();
  93.         Pwm_init();       
  94.         Adc_init();
  95.         _asm
  96.         {
  97.                 mov                a,@0x0A                //1MS                仿真器內部晶振固定為16M不可調
  98.                 //mov                a,@0x0a
  99.                 contw
  100.         }
  101.         TCC=6;                                //tcc賦初值
  102.         IMR=1;                                //使能TCC中斷
  103.         ISR1=0;
  104.         ISR2=0;
  105.        
  106.        
  107.         ENI();                                //開總中斷
  108. //------------------------------------       
  109.         while(1)
  110.         {
  111.                 WDTC();
  112.                 Check_ad();
  113.                 //Check_key();
  114.                 Led_pro();
  115.                 Pro_buzzer();       
  116.         }
  117. }
  118. //----------------------------------------------------------------------------------------
  119. //----------------------------------------------------------------------------------------
  120. void _intcall ALLInt(void) @ int
  121. {     
  122.   switch(IntVecIdx)
  123.   {
  124.     case 0xA:
  125.     if(TCIF==1)                //TCC中斷嗎?
  126.     {
  127.             ISR2&=0XFE;                //清TCC中斷標志
  128.             TCC+=6;                        //TCC賦初值
  129. //--------------------------------------------------------------------1ms
  130.   //----------------------------------------------------------------------------------------3ms enable check ad
  131.                   check_ad_cnt++;
  132.                   if(check_ad_cnt>2) {check_ad_cnt=0;f_ad=1;}
  133.   //---------------------------------------------------------------------------------D1~D6
  134.                   switch(set_value)
  135.                   {
  136.                           case 0:cnt_bai=0;cnt_shi=3;break;
  137.                           case 1:cnt_bai=0;cnt_shi=4;break;
  138.                           case 2:cnt_bai=0;cnt_shi=5;break;
  139.                           case 3:cnt_bai=0;cnt_shi=6;break;
  140.                           case 4:cnt_bai=0;cnt_shi=7;break;
  141.                           case 5:cnt_bai=0;cnt_shi=8;break;
  142.                           case 6:cnt_bai=0;cnt_shi=9;break;
  143.                           case 7:cnt_bai=1;cnt_shi=0;break;
  144.                   }
  145.                   cnt_led++;if(cnt_led>23) {cnt_led=0;}
  146.                   D1=0;D2=0;D3=0;D4=0;D5=0;D6=0;P5CR=0XFF;
  147.                   //--------------------------------------
  148.                   //if(cnt_led==1)        {if(cnt_bai==1) {P5CR &=0XEB;D3=1;}}//1B
  149.                   //else if(cnt_led==2)        {if(cnt_bai==1) {P5CR &=0XED;D5=1;}}//1C
  150.                   if(cnt_led==6) {if(cnt_bai==1) {P5CR &=0XEB;D5=1;}}//1G
  151.                   else if(cnt_led==8)        {if((cnt_shi!=1)&&(cnt_shi!=4)&&(cnt_bai==0)) {P5CR &=0XF9;D3=1;}}//2A
  152.                   else if(cnt_led==9)        {if((cnt_shi!=5)&&(cnt_shi!=6)&&(cnt_bai==0))        {P5CR &=0XF5;D2=1;}}//2B
  153.                   else if(cnt_led==10) {if((cnt_shi!=2)&&(cnt_bai==0)) {P5CR &=0XF9;D2=1;}}//2C
  154.                   else if(cnt_led==11) {if((cnt_shi!=1)&&(cnt_shi!=4)&&(cnt_shi!=7)&&(cnt_bai==0)) {P5CR &=0XF3;D3=1;}}//2D
  155.                   else if(cnt_led==12) {if(((cnt_shi==0)||(cnt_shi==2)||(cnt_shi==6)||(cnt_shi==8))&&(cnt_bai==0)) {P5CR &=0XF6;D4=1;}}//2E
  156.                   else if(cnt_led==13) {if((cnt_shi!=1)&&(cnt_shi!=2)&&(cnt_shi!=3)&&(cnt_shi!=7)&&(cnt_bai==0)) {P5CR &=0XF3;D4=1;}}//2F
  157.                   else if(cnt_led==14) {if((cnt_bai==1)||((cnt_shi!=0)&&(cnt_shi!=1)&&(cnt_shi!=7))) {P5CR &=0XF5;D4=1;}}//2G
  158.                   else if(cnt_led==16) {if(cnt_bai==0) {P5CR &=0XDE;D1=1;}}//3A
  159.                   else if(cnt_led==17) {if(cnt_bai==0) {P5CR &=0XF6;D1=1;}}//3B
  160.                   else if(cnt_led==18) {if(cnt_bai==0) {P5CR &=0XFC;D1=1;}}//3C
  161.                   else if(cnt_led==19) {if(cnt_bai==0) {P5CR &=0XFA;D3=1;}}//3D
  162.                   else if(cnt_led==20) {if(cnt_bai==0) {P5CR &=0XFA;D1=1;}}//3E
  163.                   else if(cnt_led==21) {if(cnt_bai==0) {P5CR &=0XFC;D2=1;}}//3F
  164.                   else if(cnt_led==22) {if(cnt_bai==1) {P5CR &=0XDD;D2=1;}}//3G
  165.   //--------------------------------------------------------------------------------
  166.                   f_p_pwm=1;//1ms timer count
  167. //-----------------------------------------------------------------------------------key
  168.                 if(!KEY)
  169.                 {
  170.                         if(!f_key_lock)
  171.                         {
  172.                                 cnt_key++;
  173.                                 if(cnt_key==10) {f_key_short=1;f_en=0;f_pwm=0;f_led_change=1;PWM1E=0;BUZZER=0;f_set_over=0;}
  174.                                 if(cnt_key>200)
  175.                                 {
  176.                                         cnt_key=0;cnt_key1++;
  177.                                         if(cnt_key1>18)
  178.                                         {
  179.                                                 f_key_short=0;f_key_lock=1;cnt_key1=0;
  180.                                                 f_en=1;f_set=1;set_time=0;set_time1=0;
  181.                                         }
  182.                                 }
  183.                         }
  184.                 }
  185.                 else
  186.                 {
  187.                         cnt_key=0;cnt_key1=0;f_key_lock=0;
  188.                         if(f_key_short)
  189.                         {
  190.                                 f_key_short=0;
  191.                                 set_value++;if(set_value>7) {set_value=0;}
  192.                         }
  193.                 }
  194. //----------------------------------------------------------------------------               
  195.                 if(f_set)
  196.                 {
  197.                         if(set_time1<2) {if(!PWM1E) {PWM1E=1;}}
  198.                         else {if(PWM1E) {PWM1E=0;BUZZER=0;}}
  199.                         set_time++;
  200.                         if(set_time>249)
  201.                         {
  202.                                 set_time=0;set_time1++;
  203.                                 if(set_time1==8)
  204.                                 {
  205.                                         set_time1=0;f_set=0;f_set_over=1;
  206.                                 }
  207.                         }
  208.                 }
  209. //----------------------------------------------------------------------------
  210.     }
  211.     break;
  212.   }        
  213. }
  214. //-------------------------------------------------------------------------------
  215. void Pro_buzzer(void)
  216. {
  217.         if((f_pwm)&&(f_p_pwm)&&(f_set_over))
  218.         {
  219.                 cnt_pwm++;
  220.                 if(cnt_pwm>450) {cnt_pwm=0;}
  221.                 if(cnt_pwm>250) {if(PWM1E) {PWM1E=0;BUZZER=0;}}
  222.                 else if(cnt_pwm>150) {if(!PWM1E) {PWM1E=1;}}
  223.                 else if(cnt_pwm>100) {if(PWM1E) {PWM1E=0;BUZZER=0;}}
  224.                 else {if(!PWM1E) {PWM1E=1;}}
  225.                 f_p_pwm=0;
  226.         }
  227. }
  228. //-----------------------------------------------------------------------
  229. /*void Check_key(void)
  230. {
  231.         if(KEY)
  232.         {
  233.                 if(f_key_down)
  234.                 {
  235.                         delay_10ms();
  236.                         if(KEY) {f_key_down=0;}
  237.                 }
  238.         }
  239.         else
  240.         {
  241.                 if(!f_key_down)
  242.                 {
  243.                         delay_10ms();
  244.                         if(!KEY)
  245.                         {
  246.                                 f_key_down=1;
  247.                                 set_value++;if(set_value>7) {set_value=0;}
  248.                         }
  249.                 }
  250.         }
  251. }*/
  252. //------------------------------------------------------------------------
  253. void Led_pro(void)                        //led
  254. {
  255.         if(f_led_change)
  256.         {
  257.                 if(f_pwm)
  258.                 {
  259.                         LED_R=1;LED_G=0;
  260.                 }
  261.                 else
  262.                 {
  263.                         LED_R=0;LED_G=1;
  264.                 }
  265.                 f_led_change=0;
  266.         }
  267. }
  268. //-----------------------------------------------------------------------
  269. void Check_ad(void)                //檢AD
  270. {
  271.         if(f_ad&&f_en)
  272.         {
  273.                 uchar i=0;unsigned short addatah=0;
  274.                 ad_value=0;
  275.                 for(i=0;i<16;i++)
  276.                 {
  277.                         ADDATA1H=0;ADDATA1L=0;addatah=0;
  278.                         ADRUN=1;
  279.                         while(ADRUN);
  280.                         addatah=ADDATA1H;
  281.                         ad_value+=(addatah<<8)+ADDATA1L;
  282.                 }
  283.                 ad_value &=0xfffe;
  284.                 ad_value>>=1;
  285.                 ad_value &=0xfffe;
  286.                 ad_value>>=1;
  287.                 ad_value &=0xfffe;
  288.                 ad_value>>=1;
  289.                 ad_value &=0xfffe;
  290.                 ad_value>>=1;
  291.                 f_ad=0;
  292.        
  293.         //--------------------------------------------------
  294.         switch(set_value)
  295.         {
  296.                 case 0://30W
  297.                 if((ad_value>1353)||(ad_value<1181))
  298.                 {
  299.                         if(!f_pwm) {f_pwm=1;f_led_change=1;cnt_pwm=0;}
  300.                 }
  301.                 else if(f_pwm)
  302.                 {f_pwm=0;f_led_change=1;cnt_pwm=0;PWM1E=0;BUZZER=0;}
  303.                 break;
  304.                
  305.                 case 1://40W
  306.                 if((ad_value>1783)||(ad_value<1611))
  307.                 {
  308.                         if(!f_pwm) {f_pwm=1;f_led_change=1;cnt_pwm=0;}
  309.                 }
  310.                 else if(f_pwm)
  311.                 {f_pwm=0;f_led_change=1;cnt_pwm=0;PWM1E=0;BUZZER=0;}
  312.                 break;
  313.                
  314.                 case 2://50W
  315.                 if((ad_value>2212)||(ad_value<2040))
  316.                 {
  317.                         if(!f_pwm) {f_pwm=1;f_led_change=1;cnt_pwm=0;}
  318.                 }
  319.                 else if(f_pwm)
  320.                 {f_pwm=0;f_led_change=1;cnt_pwm=0;PWM1E=0;BUZZER=0;}
  321.                 break;
  322.                
  323.                 case 3://60W
  324.                 if((ad_value>2642)||(ad_value<2470))
  325.                 {
  326.                         if(!f_pwm) {f_pwm=1;f_led_change=1;cnt_pwm=0;}
  327.                 }
  328.                 else if(f_pwm)
  329.                 {f_pwm=0;f_led_change=1;cnt_pwm=0;PWM1E=0;BUZZER=0;}
  330.                 break;
  331.                
  332.                 case 4://70W
  333.                 if((ad_value>3072)||(ad_value<2900))
  334.                 {
  335.                         if(!f_pwm) {f_pwm=1;f_led_change=1;cnt_pwm=0;}
  336.                 }
  337.                 else if(f_pwm)
  338.                 {f_pwm=0;f_led_change=1;cnt_pwm=0;PWM1E=0;BUZZER=0;}
  339.                 break;
  340.                
  341.                 case 5://80W
  342.                 if((ad_value>3502)||(ad_value<3330))
  343.                 {
  344.                         if(!f_pwm) {f_pwm=1;f_led_change=1;cnt_pwm=0;}
  345.                 }
  346.                 else if(f_pwm)
  347.                 {f_pwm=0;f_led_change=1;cnt_pwm=0;PWM1E=0;BUZZER=0;}
  348.                 break;
  349.                
  350.                 case 6://90W
  351.                 if((ad_value>3931)||(ad_value<3759))
  352.                 {
  353.                         if(!f_pwm) {f_pwm=1;f_led_change=1;cnt_pwm=0;}
  354.                 }
  355.                 else if(f_pwm)
  356.                 {f_pwm=0;f_led_change=1;cnt_pwm=0;PWM1E=0;BUZZER=0;}
  357.                 break;
  358.                
  359.                 case 7://100W                100W對應電壓值超過4V,此case無效,只作演示
  360.                 if(ad_value>4094)
  361.                 {
  362.                         if(!f_pwm) {f_pwm=1;f_led_change=1;cnt_pwm=0;}
  363.                 }
  364.                 else if(f_pwm)
  365.                 {f_pwm=0;f_led_change=1;cnt_pwm=0;PWM1E=0;BUZZER=0;}
  366.                 break;
  367.                 default:break;
  368.         }
  369.         }
  370. }
  371. //--------------------------------------------------------------------------------------
  372. //-------------------------------------------------------------------------------
  373. //-------------------------------------------------------------------------------
  374. void Sys_init(void)
  375. {
  376.         SCR=0X6F;                //4MHz
  377.         WDTCR=0X80;                //enable WDT        分頻比1:1
  378. }
  379. //--------------------------------------------------------------
  380. void Timer_init(void)
  381. {

  382.         _asm{MOV A,0x0a};
  383.         _asm{CONTW}                //4*4*(256-6)/4M=1ms
  384.         ISR1=0;
  385.         ISR2=0;
  386.         IMR=0X01;
  387. }
  388. //---------------------------------------------------------------
  389. void Pwm_init(void)
  390. {
  391.         PWMCON=0X00;        //pwm1
  392.         TMRCON=0XD3;
  393.         PRD1=185;
  394.         DT1=92;
  395.         //PWM1E=1;
  396. }
  397. //---------------------------------------------------------------
  398. void Gpio_init(void)
  399. {
  400.         P5CR=0XFF;        //P5 INPUT
  401.         P6CR=0X40;        //P66(KEY)
  402.         P7CR=0X01;        //P70(ADC5)
  403.        
  404.         P5PDCR=0X00;        //P5        enable pull down
  405.         P6ODCR=0X00;        //P6        disable Open-drain
  406.         P5PHCR=0XFF;        //P5        disable pull up
  407.         P6PHCR=0XBF;        //P66        pull up
  408.        
  409.         AISR=0X20;        //enable ADC5
  410.        
  411.         PORT5=0;
  412.         PORT6=0;
  413.         PORT7=0;
  414.        
  415.         LED_G=1;
  416. }
  417. //---------------------------------------------------------------
  418. void Adc_init(void)
  419. {
  420.         ADCON=0X0D;        //16分頻   ADC正常功耗運行                ADC5
  421.         ADOC=0X02;        //4V
  422. }
  423. //---------------------------------------------------------------
  424. void delay_10ms(void)
  425. {
  426.         _asm
  427.         {
  428.                     mov       a,@18   
  429.          mov      0x3f,a// de_1,a
  430.    delay_lp5:
  431.          mov       a,@250
  432.          mov       0x3e,a//de_2,a
  433.    delay_lp4:
  434.          nop
  435.          djz       0x3e//de_2
  436.          jmp       delay_lp4
  437.          djz       0x3f//de_1
  438.          jmp       delay_lp5
  439.         }
  440. }


  441. void _intcall TCC_l(void) @ 0x09:low_int 2
  442. {
  443. _asm{MOV A,0x2};
  444. }
復制代碼
回復

使用道具 舉報

沙發
ID:609524 發表于 2021-3-15 15:56 | 只看該作者
dyhh 發表于 2021-3-12 13:58
鏈接:https://pan.baidu.com/s/1ml5W_dUGsI0ikdgYeVZEmQ
提取碼:wg00
em78P153S的C例程,主要是TCC, ...

謝謝
回復

使用道具 舉報

樓主
ID:546198 發表于 2021-3-12 13:58 | 只看該作者
鏈接:https://pan.baidu.com/s/1ml5W_dUGsI0ikdgYeVZEmQ
提取碼:wg00
em78P153S的C例程,主要是TCC,PWM設置。結合數據手冊更好。
樓主可以去義隆官網下載EM78P372K的相關文檔,里面有各個功能的C例程和匯編例程可以參考借鑒。
希望對你有幫助。

評分

參與人數 1黑幣 +30 收起 理由
楊天想 + 30 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线免费观看a级片 | 日本高清不卡视频 | 欧美午夜精品理论片a级按摩 | 一区二区三区四区在线视频 | 欧美一级片在线看 | 亚洲一级二级三级 | 自拍偷拍亚洲欧美 | 三级黄视频在线观看 | 久久久久国产一区二区三区 | 成人国产精品色哟哟 | 久久一区二区三区四区五区 | 天天曰天天干 | 亚洲日本国产 | 99re视频这里只有精品 | 中日韩毛片 | 欧美一区二区三区国产 | 精品久久一区 | 国产伦一区二区三区久久 | 老头搡老女人毛片视频在线看 | 中国一级特黄视频 | 久久婷婷av| 国产精品区二区三区日本 | 色综合久 | 亚洲精品久久久久久一区二区 | 97精品国产97久久久久久免费 | 日韩一级一区 | 国产视频在线观看一区二区三区 | 亚洲精品一区二区三区在线 | 国产午夜精品一区二区三区嫩草 | 国产精品久久精品 | 久久av网 | 亚洲色图综合 | 欧美综合在线观看 | 亚洲狠狠爱 | 国产精品国产三级国产aⅴ浪潮 | 99视频免费看 | 99久久精品一区二区毛片吞精 | 看毛片的网站 | 成人亚洲精品 | 日韩精品一区二区三区四区视频 | 久久久久久亚洲国产精品 |