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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4923|回復: 0
收起左側

Warning for 合泰 (內存和代碼空間嚴重不足)情何以堪!

[復制鏈接]
ID:82781 發表于 2015-6-13 16:35 | 顯示全部樓層 |閱讀模式

  1. /*
  2. 2017/11/6
  3. 版本:v1.00
  4. by 王均偉
  5. 日照
  6. */


  7. #define s1_display_en 1
  8. #define s1_display_dis 0
  9. #define s2_display_en 1
  10. #define s2_display_dis 0
  11. #define s3_display_en 1
  12. #define s3_display_dis 0
  13. #define s4_display_en 1
  14. #define s4_display_dis 0
  15. #define s5_display_en 1
  16. #define s5_display_dis 0
  17. #define p_display_en 1
  18. #define p_display_dis 0
  19. void ad_process(uint16_t ad_data,uint16_t *p);//ad數據處理
  20. /*
  21. static uint8_t tick;//計數變量
  22. static uint16_t seg1_display;//COM1的掃描顯存
  23. static uint16_t seg2_display;//COM2的掃描顯存
  24. static uint16_t seg3_display;//COM3的掃描顯存
  25. static uint16_t seg4_display;//COM4的掃描顯存
  26. */
  27. uint16_t ad_date;
  28. uint16_t dis_number;
  29. /*
  30. void set_bit_16(uint16_t *a,uint8_t b)
  31. {
  32.    uint8_t *c;
  33.    if(b<=7)
  34.    {
  35.     c=(uint8_t*)a;
  36.     (*c)|=(1<<b);
  37.    }
  38.    else
  39.    {
  40.    c=(uint8_t*)a;
  41.    c++;
  42.    (*c)|=(1<<(b-8));
  43.    
  44.    }
  45. }
  46. void clr_bit_16(uint16_t *a,uint8_t b)
  47. {
  48.    uint8_t *c;
  49.    if(b<=7)
  50.    {
  51.     c=(uint8_t*)a;
  52.     (*c)&=(~(1<<b));
  53.    }
  54.    else
  55.    {
  56.    c=(uint8_t*)a;
  57.    c++;
  58.    (*c)&=(~(1<<(b-8)));
  59.    
  60.    }
  61. }
  62. */
  63. //中斷服務程序入口
  64. /*
  65. uint16_t display_ram , 顯存
  66. uint8_t f,標志位
  67. uint8_t d,是否是COM1標志
  68. */
  69. /*
  70. void display_com(uint16_t display_ram,uint8_t f,uint8_t d)
  71. {
  72. //掃描COM1口的所有的SEG
  73. uint8_t count;

  74. if(f)
  75. {
  76.        for(count=0;count<10;count++)//掃描9次
  77.       {
  78.       
  79.             switch (count)
  80.             {//
  81.            
  82.                case 0:if(get_bit(display_ram,count)&&d){_pc1=0;}else{_pc1=1;}break;
  83.              case 1:if(get_bit(display_ram,count)){_pc0=0;}else{_pc0=1;}break;
  84.              case 2:if(get_bit(display_ram,count)){_pc7=0;}else{_pc7=1;}break;
  85.              case 3:if(get_bit(display_ram,count)){_pc6=0;}else{_pc6=1;}break;
  86.              case 4:if(get_bit(display_ram,count)){_pb4=0;}else{_pb4=1;}break;
  87.              case 5:if(get_bit(display_ram,count)){_pb5=0;}else{_pb5=1;}break;
  88.              case 6:if(get_bit(display_ram,count)){_pc2=0;}else{_pc2=1;}break;
  89.              case 7:if(get_bit(display_ram,count)){_pc3=0;}else{_pc3=1;}break;
  90.              case 8:if(get_bit(display_ram,count)){_pc4=0;}else{_pc4=1;}break;
  91.              case 9:if(get_bit(display_ram,count)){_pc5=0;}else{_pc5=1;}break;
  92.             
  93.             
  94.             
  95.             }
  96.          
  97.          
  98.      }
  99. }
  100. else
  101. {
  102.   
  103.     for(count=0;count<10;count++)//掃描9次
  104.      {
  105.           switch (count)
  106.           {//
  107.              case 0:if(get_bit(display_ram,count)&&d){_pc1=1;}else{_pc1=0;}break;
  108.            case 1:if(get_bit(display_ram,count)){_pc0=1;}else{_pc0=0;}break;
  109.            case 2:if(get_bit(display_ram,count)){_pc7=1;}else{_pc7=0;}break;
  110.            case 3:if(get_bit(display_ram,count)){_pc6=1;}else{_pc6=0;}break;
  111.            case 4:if(get_bit(display_ram,count)){_pb4=1;}else{_pb4=0;}break;
  112.            case 5:if(get_bit(display_ram,count)){_pb5=1;}else{_pb5=0;}break;
  113.            case 6:if(get_bit(display_ram,count)){_pc2=1;}else{_pc2=0;}break;
  114.            case 7:if(get_bit(display_ram,count)){_pc3=1;}else{_pc3=0;}break;
  115.            case 8:if(get_bit(display_ram,count)){_pc4=1;}else{_pc4=0;}break;
  116.            case 9:if(get_bit(display_ram,count)){_pc5=1;}else{_pc5=0;}break;
  117.            
  118.           }
  119.          
  120.          
  121.        }
  122.    
  123.    
  124.    

  125.   
  126. }

  127. }*/
  128. #pragma vector ISR_AD @ 0x10//ad轉換
  129. void ISR_AD(void)
  130. {

  131. ad_date=_adrh;
  132. ad_date<<=8;
  133. ad_date+=_adrl;
  134. ad_date>>=4;
  135. _emi=1;
  136. _ade=1;//開啟AD轉換使能。

  137. }
  138. /*
  139. #pragma vector ISR_tmr0 @ 0x08
  140. void ISR_tmr0(void)
  141. {
  142. tick++;
  143. switch(tick)
  144. {     //scom1的掃描
  145. case 1: _scomc=0x3e;_pb0=1;      display_com(seg1_display,1,0); break;//掃描COM1口所有的SEG
  146. case 2: _scomc=0x3e;_pb0=0;   ; display_com(seg1_display,0,0); break;

  147.   //scom2的掃描
  148. case 3: _scomc=0x3d;_pb1=1;    display_com(seg2_display,1,1);         break;
  149. case 4: _scomc=0x3d; _pb1=0;   display_com(seg2_display,0,1);       break;


  150.   //scom3的掃描
  151. case 5: _scomc=0x3b; _pb2=1;  display_com(seg3_display,1,1);        break;
  152. case 6: _scomc=0x3b;_pb2=0;   display_com(seg3_display,0,1);       break;



  153.   //scom4的掃描
  154.     case 7: _scomc=0x37; _pb3=1; display_com(seg4_display,1,1);         break;
  155. case 8: _scomc=0x37; _pb3=0; display_com(seg4_display,0,1); tick=0;   break;



  156. }

  157. _emi=1;
  158. _t0e=1;//使能tim0中斷
  159. }
  160. */
  161. /*
  162. void display_s1_s2_s3_s4_s5_p(uint8_t s1,uint8_t s2,uint8_t s3,uint8_t s4,uint8_t s5,uint8_t p)
  163. {

  164.   if(s1) {set_bit_16(&seg1_display,6);}else{clr_bit_16(&seg1_display,6);}
  165.   if(s2) {set_bit_16(&seg1_display,4);}else{clr_bit_16(&seg1_display,4);}
  166.   if(s3) {set_bit_16(&seg1_display,9);}else{clr_bit_16(&seg1_display,9);}
  167.   if(s4) {set_bit_16(&seg1_display,8);}else{clr_bit_16(&seg1_display,8);}
  168.   if(s5) {set_bit_16(&seg1_display,1);}else{clr_bit_16(&seg1_display,1);}
  169.   if(p)  {set_bit_16(&seg1_display,3);}else{clr_bit_16(&seg1_display,3);}
  170. }
  171. void Dispaly_SEGD3(uint8_t a)//顯示斷碼
  172. {


  173.   switch (a)
  174.   {
  175.    
  176.      case 0:seg2_display&=0xfcff;seg3_display&=0xfcff;seg4_display&=0xfcff;break;
  177.    
  178.      case 1: seg2_display|=0x0100;seg4_display|=0x100; break;//顯示1
  179.    
  180.      case 2:seg2_display|=0x0300;seg3_display|=0x300;seg4_display|=0x0200; break;
  181.    
  182.    
  183.      case 3:seg2_display|=0x0300;seg3_display|=0x100;seg4_display|=0x0300; break;
  184.    
  185.      default:seg2_display&=0xfcff;seg3_display&=0xfcff;seg4_display&=0xfcff;
  186.   }

  187. }

  188. void Dispaly_SEGD4(uint8_t a)//顯示斷碼
  189. {


  190. switch (a)
  191. {
  192.    case 0:seg1_display|=0x0080;seg2_display|=0x00c0;set_bit_16(&seg3_display,7);clr_bit_16(&seg3_display,6);seg4_display|=0x00c0;break;//顯示0
  193.   
  194.    case 1: clr_bit_16(&seg1_display,7);set_bit_16(&seg2_display,6);clr_bit_16(&seg2_display,7);seg3_display&=0xff3f;set_bit_16(&seg4_display,6);clr_bit_16(&seg4_display,7); break;//顯示1
  195.   
  196.    case 2:seg1_display|=0x0080;set_bit_16(&seg2_display,6);clr_bit_16(&seg2_display,7);seg3_display|=0x00c0;clr_bit_16(&seg4_display,6);set_bit_16(&seg4_display,7);break;
  197.    
  198.    case 3:seg1_display|=0x0080;set_bit_16(&seg2_display,6);clr_bit_16(&seg2_display,7);set_bit_16(&seg3_display,6);clr_bit_16(&seg3_display,7);seg4_display|=0x00c0; break;

  199.    case 4:seg1_display&=0xff7f;seg2_display|=0x00c0;set_bit_16(&seg3_display,6);clr_bit_16(&seg3_display,7);set_bit_16(&seg4_display,6);clr_bit_16(&seg4_display,7);break;

  200.    case 5:seg1_display|=0x0080;seg2_display|=0x00c0;seg3_display|=0x0080; set_bit_16(&seg2_display,7);clr_bit_16(&seg2_display,6);set_bit_16(&seg3_display,6);clr_bit_16(&seg3_display,7);           seg4_display|=0x00c0; break;
  201.   
  202.    case 6:seg1_display|=0x0080;seg2_display|=0x00c0; set_bit_16(&seg2_display,7);clr_bit_16(&seg2_display,6); seg3_display|=0x00c0;seg4_display|=0x00c0;break;
  203.   
  204.    case 7:seg1_display|=0x0080;set_bit_16(&seg2_display,6);clr_bit_16(&seg2_display,7);seg3_display&=0xff3f; set_bit_16(&seg4_display,6);clr_bit_16(&seg4_display,7);  break;
  205.       
  206.    case 8:seg1_display|=0x0080;seg2_display|=0x00c0;seg3_display|=0x00c0;seg4_display|=0x00c0; break;
  207.   
  208.    case 9:seg1_display|=0x0080;seg2_display|=0x00c0;set_bit_16(&seg3_display,6);clr_bit_16(&seg3_display,7);seg4_display|=0x00c0; break;
  209.   
  210.    default:seg1_display|=0x0080;seg2_display|=0x00c0;set_bit_16(&seg3_display,7);clr_bit_16(&seg3_display,6);seg4_display|=0x00c0;
  211.   
  212.      
  213. }

  214. }
  215. */
  216. /*
  217. void Dispaly_SEGD5(uint8_t number)
  218. {

  219. switch (number)
  220.    {
  221.    case 0:seg1_display|=0x0020;seg2_display|=0x0030;set_bit_16(&seg3_display,5);clr_bit_16(&seg3_display,4);seg4_display|=0x0030;break;//顯示0
  222.   
  223.    case 1: clr_bit_16(&seg1_display,5);set_bit_16(&seg2_display,4);clr_bit_16(&seg2_display,5);seg3_display&=0xffcf;set_bit_16(&seg4_display,4);clr_bit_16(&seg4_display,5); break;//顯示1
  224.   
  225.    case 2:seg1_display|=0x0020;set_bit_16(&seg2_display,4);clr_bit_16(&seg2_display,5);seg3_display|=0x0030;clr_bit_16(&seg4_display,4);set_bit_16(&seg4_display,5);break;
  226.    
  227.    case 3:seg1_display|=0x0020;set_bit_16(&seg2_display,4);clr_bit_16(&seg2_display,5);set_bit_16(&seg3_display,4);clr_bit_16(&seg3_display,5);seg4_display|=0x0030; break;

  228.    case 4:seg1_display&=0xffdf;seg2_display|=0x0030;set_bit_16(&seg3_display,4);clr_bit_16(&seg3_display,5);set_bit_16(&seg4_display,4);clr_bit_16(&seg4_display,5);break;

  229.    case 5:seg1_display|=0x0020;seg2_display|=0x0030;seg3_display|=0x0020; set_bit_16(&seg2_display,5);clr_bit_16(&seg2_display,4);set_bit_16(&seg3_display,4);clr_bit_16(&seg3_display,5);           seg4_display|=0x0030; break;
  230.   
  231.    case 6:seg1_display|=0x0020;seg2_display|=0x0030; set_bit_16(&seg2_display,5);clr_bit_16(&seg2_display,4); seg3_display|=0x0030;seg4_display|=0x0030;break;
  232.   
  233.    case 7:seg1_display|=0x0020;set_bit_16(&seg2_display,4);clr_bit_16(&seg2_display,5);seg3_display&=0xffcf; set_bit_16(&seg4_display,4);clr_bit_16(&seg4_display,5);  break;
  234.       
  235.    case 8:seg1_display|=0x0020;seg2_display|=0x0030;seg3_display|=0x0030;seg4_display|=0x0030; break;
  236.   
  237.    case 9:seg1_display|=0x0020;seg2_display|=0x0030;set_bit_16(&seg3_display,4);clr_bit_16(&seg3_display,5);seg4_display|=0x0030; break;
  238.   
  239.    default:seg1_display|=0x0020;seg2_display|=0x0030;set_bit_16(&seg3_display,5);clr_bit_16(&seg3_display,4);seg4_display|=0x0030;
  240.    
  241.   
  242. }

  243. }
  244. void Dispaly_SEGD2(uint8_t number)
  245. {
  246.    switch (number)
  247.      {
  248.      case 0:seg1_display|=0x0004;seg2_display|=0x000c;set_bit_16(&seg3_display,2);clr_bit_16(&seg3_display,3);seg4_display|=0x000c;break;//顯示0
  249.    
  250.      case 1: clr_bit_16(&seg1_display,2);set_bit_16(&seg2_display,3);clr_bit_16(&seg2_display,2);seg3_display&=0xfff3;set_bit_16(&seg4_display,3);clr_bit_16(&seg4_display,2); break;//顯示1
  251.    
  252.      case 2:seg1_display|=0x0004;set_bit_16(&seg2_display,3);clr_bit_16(&seg2_display,2);seg3_display|=0x000c;clr_bit_16(&seg4_display,3);set_bit_16(&seg4_display,2);break;
  253.      
  254.      case 3:seg1_display|=0x004;set_bit_16(&seg2_display,3);clr_bit_16(&seg2_display,2);set_bit_16(&seg3_display,3);clr_bit_16(&seg3_display,2);seg4_display|=0x00c; break;
  255.    
  256.      case 4:seg1_display&=0xfff7;seg2_display|=0x00c;set_bit_16(&seg3_display,3);clr_bit_16(&seg3_display,2);set_bit_16(&seg4_display,3);clr_bit_16(&seg4_display,2);break;
  257.    
  258.      case 5:seg1_display|=0x004;seg2_display|=0x00c;seg3_display|=0x004; set_bit_16(&seg2_display,2);clr_bit_16(&seg2_display,3);set_bit_16(&seg3_display,3);clr_bit_16(&seg3_display,2);           seg4_display|=0x00c; break;
  259.    
  260.      case 6:seg1_display|=0x004;seg2_display|=0x00c; set_bit_16(&seg2_display,2);clr_bit_16(&seg2_display,3); seg3_display|=0x00c;seg4_display|=0x00c;break;
  261.    
  262.      case 7:seg1_display|=0x004;set_bit_16(&seg2_display,3);clr_bit_16(&seg2_display,2);seg3_display&=0xfff3; set_bit_16(&seg4_display,3);clr_bit_16(&seg4_display,2);  break;
  263.         
  264.      case 8:seg1_display|=0x004;seg2_display|=0x00c;seg3_display|=0x00c;seg4_display|=0x00c; break;
  265.    
  266.      case 9:seg1_display|=0x004;seg2_display|=0x00c;set_bit_16(&seg3_display,3);clr_bit_16(&seg3_display,2);seg4_display|=0x00c; break;
  267.    
  268.      default:seg1_display|=0x0004;seg2_display|=0x00c;set_bit_16(&seg3_display,2);clr_bit_16(&seg3_display,3);seg4_display|=0x00c;
  269.    
  270.    }

  271. }
  272. void Dispaly_SEGD1(uint8_t number)
  273. {

  274.    switch (number)
  275.   {
  276.    
  277.    
  278.      case 0:seg2_display&=0xff3;seg3_display&=0xff3;seg4_display&=0xfff3;break;
  279.    
  280.      case 1: seg2_display|=0x02;seg4_display|=0x2; break;//顯示1
  281.    
  282.      case 2:seg2_display|=0x03;seg3_display|=0x3;seg4_display|=0x01; break;
  283.    
  284.      case 3:seg2_display|=0x03;seg3_display|=0x2;seg4_display|=0x03; break;
  285.    
  286.      default:seg2_display&=0xff3;seg3_display&=0xff3;seg4_display&=0xfff3;
  287.   }   



  288. }

  289. */

  290. void ad_process(uint16_t ad_data,uint16_t *p)//ad數據處理
  291. {
  292.   uint8_t i;
  293.   uint8_t n;
  294.   
  295.   if(ad_data<*p){dis_number=0;return ;}//如果小于0度,按照0度處理
  296.   
  297.   
  298.   
  299.   for(i=0;i<23;i++)//1攝氏度到23攝氏度
  300.   {
  301.    if(*p==ad_data)//如果相等,那么直接返回點溫度值
  302.    {
  303.    
  304.    dis_number=i;//整數度
  305.    return ;
  306.    }
  307.    else
  308.    if((*p<ad_data)&&(*(p+1)>ad_data))
  309.       {
  310.    dis_number=i;//整數度
  311.    dis_number<<=8;//整數度
  312.    
  313.    
  314.    //小數點按照線性計算,就相當于p和P++之間進行求差值,然后用1除
  315.         n=*(p+1)-*p;
  316.         n=100/n;//現行小數點,100,是為了使結果變成整數,其實是1,
  317.         dis_number+=n;
  318.       
  319.    return ;
  320.    
  321.       }
  322.   
  323.   
  324.   p++;
  325.   }
  326.   
  327.   
  328.   
  329.   
  330.    
  331.    
  332. }   
  333. void main()
  334. {
  335. uint8_t i;
  336. uint16_t ad_temp_tab[]={
  337. 1077,1112,1147,1182,1218,1254,1289,1325,1361,1398,1434,1438,1455,1482,1517,
  338. 1558,1604,1652,1702,1753,1805,1856,1906,1954,2002,2048,2092,/*2135,2176,2216,
  339. 2255,2293,2330,2366,2410,2436,2470,2504,2537,2570,2603*/};
  340. /*
  341. seg1_display=0;
  342. seg2_display=0;
  343. seg3_display=0;
  344. seg4_display=0;
  345. //SEG口定義
  346. _pbc=0;
  347. _pbpu=0x0f;//上啦
  348. _pcc=0;//設置為輸出
  349. _pcpu=0x0f;//上啦
  350. //設置PB口為COM口
  351. _pbc0=0;
  352. _pbc1=0;
  353. _pbc2=0;//output
  354. _pbc3=0;
  355. */
  356. //中斷配置
  357. _emi=1;//使能全局開關
  358. //_t0e=1;//使能tim0中斷
  359. _ade=1;//開啟AD轉換使能。

  360. //ad轉換
  361. _adcr=0x48;//選擇AN0通道的PA0口作為模擬輸入,但是并未開啟轉換
  362. _acsr=0x80;//開啟AD電源,4MHZ時轉換速度是500ns
  363. //定時器定義
  364. _tmr0c=0x87;
  365. _tmr0=(256-100);
  366. //_t0on=1;//開始定時
  367. //tick=0;//清除計時
  368. //display_s1_s2_s3_s4_s5_p(0,1,0,1,1,1);
  369. //Dispaly_SEGD3(3);
  370. //Dispaly_SEGD4(9);
  371. //Dispaly_SEGD5(6);
  372. //Dispaly_SEGD2(5);
  373. //Dispaly_SEGD1(1);
  374. while(1){

  375. _start=0;
  376. _start=1;
  377. _start=0;
  378. _delay(250000);
  379.   ad_process(ad_date, ad_temp_tab);//ad數據處理

  380. }
  381. }
復制代碼


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产免费看 | 东京久久 | 国产高清av免费观看 | 国产剧情一区 | 羞羞的视频免费在线观看 | 欧美在线网站 | 国产激情网| 乱一性一乱一交一视频a∨ 色爱av | 日韩一二三区视频 | 欧美精品在欧美一区二区 | 国产精品成人国产乱 | www.9191.com | 国产一区二区中文字幕 | 国产高清一区二区三区 | 欧美日韩国产精品一区 | 天天插天天狠天天透 | 丝袜美腿一区二区三区动态图 | 国产精品免费在线 | 国产精品日女人 | 久草免费福利 | 日韩成人久久 | 爱综合| 操久久 | 久草免费福利 | 色狠狠桃花综合 | 国产精品一区2区 | 欧美黑人狂野猛交老妇 | 亚洲伊人a | av一级一片 | 91视视频在线观看入口直接观看 | 日韩电影一区二区三区 | 免费黄色录像视频 | 欧美日韩精品一区二区三区四区 | 久久精品久久精品久久精品 | 日韩欧美精品一区 | 亚洲一区导航 | 中文字幕一区二区三区在线乱码 | 午夜网站视频 | 久久国产精品72免费观看 | 狠狠色狠狠色综合系列 | 一区二区在线看 |