標題: 利用單片機GATE位測量INT1引腳上正脈沖的寬度 程序有問題 求幫助 [打印本頁]

作者: 2531572670    時間: 2020-6-19 14:44
標題: 利用單片機GATE位測量INT1引腳上正脈沖的寬度 程序有問題 求幫助
原理圖以及程序文件見附件


單片機源程序如下:
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit P3_3=P3^3;
  5. uchar count_high;
  6. uchar count_low;
  7. uint num;
  8. uchar shiwan, wan, qian, bai, shi, ge;
  9. uchar flag;
  10. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  11. void delay(uint z)
  12. {
  13. uint x,y;
  14. for(x=z;x>0;x--)
  15. for(y=110;y>0;y--);
  16. }
  17. void display(uint a,uint b,uint c,uint d,uint e,uint f)
  18. {
  19. P2=0xfe;
  20. P0=table[f];
  21. delay(2);
  22. P2=0xfd;
  23. P0=table[e];
  24. delay(2);
  25. P2=0xfb;
  26. P0=table[d];
  27. delay(2);
  28. P2=0xf7;
  29. P0=table[c];
  30. delay(2);
  31. P2=0xef;
  32. P0=table[b];
  33. delay(2);
  34. P2=0xdf;
  35. P0=table[a];
  36. delay(2);
  37. }
  38. void read_count()
  39. {
  40. do
  41. {
  42. count_high=TH1;
  43. count_low=TL1;
  44. }
  45. while(count_high!=TH1);
  46. num=count_high*256+count_low;
  47. }
  48. void main()
  49. {
  50. while(1)
  51. {
  52. flag=0;
  53. TMOD=0x90;
  54. TH1=0;
  55. TL1=0;
  56. while(P3_3==1);
  57. TR1=1;
  58. while(P3_3==0);
  59. while(P3_3==1);
  60. TR1=1;
  61. read_count();
  62. shiwan=num/100000;
  63. wan=num%100000/10000;
  64. qian=num%10000/1000;
  65. bai=num%1000/100;
  66. shi=num%100/10;
  67. ge=num%10;
  68. while(flag!=100)
  69. {
  70. flag++;
  71. display(ge,shi,bai,qian,wan,shiwan);
  72. }
  73. }
  74. }
復(fù)制代碼
請大家指教:
利用GATE位測量INT1'引腳上正脈沖的寬度.zip (54.4 KB, 下載次數(shù): 5)


作者: 2531572670    時間: 2020-6-19 14:45
感謝采納
作者: 2531572670    時間: 2020-6-19 17:20
這個程序是測量脈沖個數(shù)的,下面附件程序可以測量脈沖寬度

利用GATE位測量INT1'引腳上正脈沖的寬度.zip

49.93 KB, 下載次數(shù): 3, 下載積分: 黑幣 -5






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1