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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2353|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)程序中pwm信號讀取不出來,求解救!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:250933 發(fā)表于 2017-11-19 00:05 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
51單片機(jī)中斷中pwm的信號讀取不出來,無法和count比較
  1. #include<reg52.h>
  2. #include "control.h"
  3. #include "12864.h"
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define keydata P1
  7. sbit A1=P2^2;
  8. sbit A2=P2^3;
  9. sbit ENA=P2^4;
  10. signed int count=0;
  11. signed char pwm=0;
  12. signed char anjian=0;
  13. uchar numshi=0;
  14. uchar numge=0;
  15. void delayms(unsigned int xms)
  16. {
  17.         unsigned int i,j;
  18.         for(i=0;i<xms;i++)
  19.                 for(j=0;j<110;j++);
  20. }

  21. void pwm_dis()
  22. {
  23.         numshi=pwm/10;
  24.         numge=pwm%10;
  25.         write_12864_data(0x30+numshi);
  26.         write_12864_data(0x30+numge);      
  27. }

  28. void anjian_dis()
  29. {
  30.         numshi=anjian/10;
  31.         numge=anjian%10;
  32.         write_12864_data(0x30+numshi);
  33.         write_12864_data(0x30+numge);      
  34. }
  35. void keyscan()
  36. {
  37.                 unsigned char dat=0;
  38.                 unsigned char num=0;
  39.                         keydata=0xfe;
  40.                         dat=keydata;
  41.                         dat=dat&0xf0;
  42.                         while(dat!=0xf0)
  43.                                 {
  44.                                         delayms(5);
  45.                                         dat=keydata;
  46.                                         dat=dat&0xf0;
  47.                                         while(dat!=0xf0)
  48.                                         {
  49.                                                 dat=keydata;
  50.                                         switch(dat)
  51.                                                 {
  52.                                                         case 0xee:num=1;
  53.                                                                 break;
  54.                                                         case 0xde:num=2;
  55.                                                                 break;
  56.                                                         case 0xbe:num=3;
  57.                                                                 break;
  58.                                                         case 0x7e:num=4;
  59.                                                                 break;
  60.                                                 }
  61.                                         while(dat!=0xf0)
  62.                                                 {
  63.                                                         dat=keydata;
  64.                                                         dat=dat&0xf0;
  65.                                                 }
  66.                                                
  67.                                         }
  68.                                 }

  69.                         keydata=0xfd;
  70.                         dat=keydata;
  71.                         dat=dat&0xf0;
  72.                         while(dat!=0xf0)
  73.                                 {
  74.                                         delayms(5);
  75.                                         dat=keydata;
  76.                                         dat=dat&0xf0;
  77.                                         while(dat!=0xf0)
  78.                                         {
  79.                                                 dat=keydata;
  80.                                         switch(dat)
  81.                                                 {
  82.                                                         case 0xed:num=5;
  83.                                                                 break;
  84.                                                         case 0xdd:num=6;
  85.                                                                 break;
  86.                                                         case 0xbd:num=7;
  87.                                                                 break;
  88.                                                         case 0x7d:num=8;
  89.                                                                 break;
  90.                                                 }
  91.                                         while(dat!=0xf0)
  92.                                                 {
  93.                                                         dat=keydata;
  94.                                                         dat=dat&0xf0;
  95.                                                 }
  96.                                                
  97.                                         }
  98.                                 }


  99.                         keydata=0xfb;
  100.                         dat=keydata;
  101.                         dat=dat&0xf0;
  102.                         while(dat!=0xf0)
  103.                                 {
  104.                                         delayms(5);
  105.                                         dat=keydata;
  106.                                         dat=dat&0xf0;
  107.                                         while(dat!=0xf0)
  108.                                         {
  109.                                                 dat=keydata;
  110.                                         switch(dat)
  111.                                                 {
  112.                                                         case 0xeb:num=9;
  113.                                                                 break;
  114.                                                         case 0xdb:num=10;
  115.                                                                 break;
  116.                                                         case 0xbb:num=11;
  117.                                                                 break;
  118.                                                         case 0x7b:num=12;
  119.                                                                 break;
  120.                                                 }
  121.                                         while(dat!=0xf0)
  122.                                                 {
  123.                                                         dat=keydata;
  124.                                                         dat=dat&0xf0;
  125.                                                 }
  126.                                        
  127.                                         }
  128.                                 }


  129.                         keydata=0xf7;
  130.                         dat=keydata;
  131.                         dat=dat&0xf0;
  132.                         while(dat!=0xf0)
  133.                                 {
  134.                                         delayms(5);
  135.                                         dat=keydata;
  136.                                         dat=dat&0xf0;
  137.                                         while(dat!=0xf0)
  138.                                         {
  139.                                                 dat=keydata;
  140.                                         switch(dat)
  141.                                                 {
  142.                                                         case 0xe7:num=13;
  143.                                                                 break;
  144.                                                         case 0xd7:num=14;
  145.                                                                 break;
  146.                                                         case 0xb7:num=15;
  147.                                                                 break;
  148.                                                         case 0x77:num=16;
  149.                                                                 break;
  150.                                                 }
  151.                                         while(dat!=0xf0)
  152.                                                 {
  153.                                                         dat=keydata;
  154.                                                         dat=dat&0xf0;
  155.                                                 }
  156.                                                
  157.                                         }
  158.                                 }
  159.                
  160.                
  161.       
  162.                 switch(num)
  163.                 {
  164.                         case 1:        write_12864_addr(1,3);
  165.                                 pwm=0;
  166.                                 pwm_dis();
  167.                                 break;
  168.                 case 2:        write_12864_addr(1,3);
  169.                                 pwm=10;
  170.                                 pwm_dis();
  171.                                 break;
  172.                 case 3:write_12864_addr(1,3);
  173.                                 pwm=20;
  174.                                 pwm_dis();
  175.                                 break;
  176.                 case 4:write_12864_addr(1,3);
  177.                                 pwm=30;
  178.                                 pwm_dis();
  179.                                 break;
  180.                 case 5:write_12864_addr(1,3);
  181.                                 pwm=40;
  182.                                 pwm_dis();
  183.                                 break;
  184.                 case 6:write_12864_addr(1,3);
  185.                                 pwm=50;
  186.                                 pwm_dis();
  187.                                 break;
  188.                 case 7:write_12864_addr(1,3);
  189.                                 pwm=60;
  190.                                 pwm_dis();
  191.                                 break;
  192.                 case 8:write_12864_addr(1,3);
  193.                                 pwm=70;
  194.                                 pwm_dis();
  195.                                 break;

  196.                 case 9:        write_12864_addr(1,3);
  197.                                 pwm=80;
  198.                                 pwm_dis();
  199.                                 break;
  200.                 case 10:        write_12864_addr(1,3);
  201.                                 pwm=90;
  202.                                 pwm_dis();
  203.                               
  204.                                 break;
  205.                 case 11:write_12864_addr(1,3);
  206.                        
  207.                                 pwm=99;
  208.                                 pwm_dis();
  209.                                 break;
  210.                 case 12:write_12864_addr(1,3);
  211.                        
  212.                                 pwm=35;
  213.                                 pwm_dis();
  214.                                 break;
  215.                 case 13:write_12864_addr(1,3);
  216.                        
  217.                                 pwm=pwm+5;
  218.                                 pwm_dis();
  219.                                 break;
  220.                 case 14:write_12864_addr(1,3);
  221.                        
  222.                                 pwm=pwm-5;
  223.                                 pwm_dis();
  224.                                 break;
  225.                 case 15:write_12864_addr(1,3);
  226.                                 pwm=pwm+1;
  227.                                 pwm_dis();
  228.                                 break;
  229.                 case 16:write_12864_addr(1,3);
  230.                                 pwm=pwm-1;
  231.                                 pwm_dis();
  232.                                 break;


  233.         }
  234.       

  235.       
  236. }

  237. void keyscan_1()
  238. {
  239.                 unsigned char dat=0;
  240.                 unsigned char num=0;
  241.                         keydata=0xfe;
  242.                         dat=keydata;
  243.                         dat=dat&0xf0;
  244.                         while(dat!=0xf0)
  245.                                 {
  246.                                         delayms(5);
  247.                                         dat=keydata;
  248.                                         dat=dat&0xf0;
  249.                                         while(dat!=0xf0)
  250.                                         {
  251.                                                 dat=keydata;
  252.                                         switch(dat)
  253.                                                 {
  254.                                                         case 0xee:num=1;
  255.                                                                 break;
  256.                                                         case 0xde:num=2;
  257.                                                                 break;
  258.                                                         case 0xbe:num=3;
  259.                                                                 break;
  260.                                                         case 0x7e:num=4;
  261.                                                                 break;
  262.                                                 }
  263.                                         while(dat!=0xf0)
  264.                                                 {
  265.                                                         dat=keydata;
  266.                                                         dat=dat&0xf0;
  267.                                                 }
  268.                                                
  269.                                         }
  270.                                 }

  271.                         keydata=0xfd;
  272.                         dat=keydata;
  273.                         dat=dat&0xf0;
  274.                         while(dat!=0xf0)
  275.                                 {
  276.                                         delayms(5);
  277.                                         dat=keydata;
  278.                                         dat=dat&0xf0;
  279.                                         while(dat!=0xf0)
  280.                                         {
  281.                                                 dat=keydata;
  282.                                         switch(dat)
  283.                                                 {
  284.                                                         case 0xed:num=5;
  285.                                                                 break;
  286.                                                         case 0xdd:num=6;
  287.                                                                 break;
  288.                                                         case 0xbd:num=7;
  289.                                                                 break;
  290.                                                         case 0x7d:num=8;
  291.                                                                 break;
  292.                                                 }
  293.                                         while(dat!=0xf0)
  294.                                                 {
  295.                                                         dat=keydata;
  296.                                                         dat=dat&0xf0;
  297.                                                 }
  298.                                                
  299.                                         }
  300.                                 }


  301.                         keydata=0xfb;
  302.                         dat=keydata;
  303.                         dat=dat&0xf0;
  304.                         while(dat!=0xf0)
  305.                                 {
  306.                                         delayms(5);
  307.                                         dat=keydata;
  308.                                         dat=dat&0xf0;
  309.                                         while(dat!=0xf0)
  310.                                         {
  311.                                                 dat=keydata;
  312.                                         switch(dat)
  313.                                                 {
  314.                                                         case 0xeb:num=9;
  315.                                                                 break;
  316.                                                         case 0xdb:num=10;
  317.                                                                 break;
  318.                                                         case 0xbb:num=11;
  319.                                                                 break;
  320.                                                         case 0x7b:num=12;
  321.                                                                 break;
  322.                                                 }
  323.                                         while(dat!=0xf0)
  324.                                                 {
  325.                                                         dat=keydata;
  326.                                                         dat=dat&0xf0;
  327.                                                 }
  328.                                        
  329.                                         }
  330.                                 }


  331.                         keydata=0xf7;
  332.                         dat=keydata;
  333.                         dat=dat&0xf0;
  334.                         while(dat!=0xf0)
  335.                                 {
  336.                                         delayms(5);
  337.                                         dat=keydata;
  338.                                         dat=dat&0xf0;
  339.                                         while(dat!=0xf0)
  340.                                         {
  341.                                                 dat=keydata;
  342.                                         switch(dat)
  343.                                                 {
  344.                                                         case 0xe7:num=13;
  345.                                                                 break;
  346.                                                         case 0xd7:num=14;
  347.                                                                 break;
  348.                                                         case 0xb7:num=15;
  349.                                                                 break;
  350.                                                         case 0x77:num=16;
  351.                                                                 break;
  352.                                                 }
  353.                                         while(dat!=0xf0)
  354.                                                 {
  355.                                                         dat=keydata;
  356.                                                         dat=dat&0xf0;
  357.                                                 }
  358.                                                
  359.                                         }
  360.                                 }
  361.                
  362.                
  363.       
  364.                 switch(num)
  365.                 {
  366.                 case 1:        write_12864_addr(3,7);
  367.                                 anjian=0;
  368.                                 anjian_dis();
  369.                                 break;
  370.                 case 2:        write_12864_addr(3,7);
  371.                                 anjian=10;
  372.                                 anjian_dis();
  373.                                 break;
  374.                 case 3:write_12864_addr(3,7);
  375.                                 anjian=20;
  376.                                 anjian_dis();
  377.                                 break;
  378.                 case 4:write_12864_addr(3,7);
  379.                                 anjian=30;
  380.                                 anjian_dis();
  381.                                 break;
  382.                 case 5:write_12864_addr(3,7);
  383.                                 anjian=40;
  384.                                 anjian_dis();
  385.                                 break;
  386.                 case 6:write_12864_addr(3,7);
  387.                                 anjian=50;
  388.                                 anjian_dis();
  389.                                 break;
  390.                 case 7:write_12864_addr(3,7);
  391.                                 anjian=60;
  392.                                 anjian_dis();
  393.                                 break;
  394.                 case 8:write_12864_addr(3,7);
  395.                                 anjian=anjian+1;
  396.                                 anjian_dis();
  397.                                 break;
  398.                 case 9:        write_12864_addr(3,7);
  399.                                 anjian=anjian+2;
  400.                                 anjian_dis();
  401.                                 break;
  402.                 case 10:        write_12864_addr(3,7);
  403.                                 anjian=anjian+3;
  404.                                 anjian_dis();                              
  405.                                 break;
  406.                 case 11:write_12864_addr(3,7);                       
  407.                                 anjian=anjian+4;
  408.                                 anjian_dis();
  409.                                 break;
  410.                 case 12:write_12864_addr(3,7);                       
  411.                                 anjian=anjian+5;
  412.                                 anjian_dis();
  413.                                 break;
  414.                 case 13:write_12864_addr(3,7);                       
  415.                                 anjian=anjian+6;
  416.                                 anjian_dis();
  417.                                 break;
  418.                 case 14:write_12864_addr(3,7);                       
  419.                                 anjian=anjian+7;
  420.                                 anjian_dis();

  421.                                 break;
  422.                 case 15:write_12864_addr(3,7);
  423.                                 anjian=anjian+8;
  424.                                 anjian_dis();
  425.                                 break;
  426.                 case 16:write_12864_addr(3,7);
  427.                                 anjian=anjian+9;
  428.                                 anjian_dis();
  429.                                 break;


  430.         }
  431.       

  432. }


  433. void timer1() interrupt 3
  434. {
  435.       

  436.         TH1=(65535-1000)/256;
  437.         TL1=(65535-1000)%256;
  438.         count++;
  439.         if(count=100)
  440.         {
  441.         count=0;
  442.         }
  443.         if(count<=pwm)
  444.         {
  445.                 ENA=1;
  446.                 A1=0;
  447.                 A2=1;
  448.         }
  449.         else
  450.         {
  451.                 ENA=0;
  452.                 A1=0;
  453.                 A2=1;
  454.         }

  455.                 TR1=1;


  456. }
復(fù)制代碼




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

使用道具 舉報

沙發(fā)
ID:250933 發(fā)表于 2017-11-19 00:19 | 只看該作者
頂 求解救
回復(fù)

使用道具 舉報

板凳
ID:213173 發(fā)表于 2017-11-19 06:44 | 只看該作者
你寫的這程序中既沒有主程序main(),也沒有初始化定時器,怎么能夠跑得起來?

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

地板
ID:250933 發(fā)表于 2017-11-19 10:35 | 只看該作者
wulin 發(fā)表于 2017-11-19 06:44
你寫的這程序中既沒有主程序main(),也沒有初始化定時器,怎么能夠跑得起來?

這是子程序之一,這個子程序的pwm信號讀不出來,你幫我看看,是不是switc好  case 函數(shù)有問題  謝謝啦
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 女人牲交视频一级毛片 | 国产重口老太伦 | 欧美一级免费片 | 综合精品久久久 | 日本在线精品视频 | 天堂在线免费视频 | 欧美 日韩 综合 | 成人一区二区在线 | 亚洲免费视频在线观看 | 久久久综合网 | 久久综合影院 | 国产免费一区二区 | 欧美综合久久久 | 精精国产视频 | 老妇激情毛片免费 | 永久精品 | 欧美一级黑人aaaaaaa做受 | 日韩中文字幕免费在线观看 | 精品日韩在线 | 无毛av | 999视频在线播放 | 国产在线精品一区二区三区 | 免费国产成人av | 日韩在线视频网址 | 欧美日韩1区2区 | 亚洲精品一区二区在线观看 | 成人一区av偷拍 | 国产成人一区二区三区电影 | 欧美精品一区三区 | 一区二区三区av夏目彩春 | 中文字幕av网站 | av日日操| 亚洲 中文 欧美 | 中文一区| 欧美精品一区在线发布 | 亚洲入口 | 欧美一级淫片免费视频黄 | ririsao久久精品一区 | 男女啪啪网址 | 狠狠入ady亚洲精品经典电影 | 日韩av在线免费 |