找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

演示int0,t0,int1,t1中断程序

[复制链接]
admin 发表于 2012-9-2 14:17:53 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
复制代码
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar code table1[12]={0x28,0x7E,0xa2,0x62,0x74,0x61,0x21,0x7A,0x20,0x60,0x00,0xff};
  6. uchar code table2[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  7. /**********************************************************
  8. 50US 延时子函数
  9. **********************************************************/
  10. void delay_50us(uint t){
  11. uchar j;
  12. for(;t>0;t--)
  13. for(j=19;j>0;j--);
  14. }
  15. /**********************************************************
  16. 50MS 延时子函数
  17. **********************************************************/
  18. void delay_50ms(uint t){
  19. uint j;
  20. for(;t>0;t--)
  21. for(j=6245;j>0;j--);
  22. }
  23. uchar num_0,num_1,num_2,num_3,tmp,i;
  24. uchar buf[8]={0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28};
  25. sbit int_1=P3^3;
  26. void main(void){
  27. TMOD=0x11;
  28. ET0=1;//定时器0开关
  29. ET1=1;
  30. TR0=1;//
  31. TR1=1;
  32. IT0=1;
  33. EX0=1;
  34. IT1=1;
  35. EX1=1;
  36. EA = 1;
  37. while (1){
  38. for(i=0;i<8;i++){
  39. P0=buf[i];
  40. P2=table2[i];
  41. delay_50us(20);
  42. }
  43. }
  44. }
  45. void procBuf(void){
  46. buf[0]=table1[num_0/10];
  47. buf[1]=table1[num_0%10];
  48. buf[2]=table1[num_1/10];
  49. buf[3]=table1[num_1%10];
  50. buf[4]=table1[num_2/10];
  51. buf[5]=table1[num_2%10];
  52. buf[6]=table1[num_3/10];
  53. buf[7]=table1[num_3%10];
  54. }
  55. void int0(void) interrupt 0{
  56. num_0++;
  57. if(num_0==100){
  58. num_0=0;
  59. }
  60. procBuf();
  61. }
  62. void timer0(void) interrupt 1 {
  63. TH0 = (65536-10000)/256;
  64. TL0 = (65536-10000)%256;
  65. if(++num_1==100){
  66. num_1=0;
  67. }
  68. procBuf();
  69. }
  70. void int1(void) interrupt 2{
  71. num_2++;
  72. if(num_2==100){
  73. num_2=0;
  74. }
  75. procBuf();
  76. }
  77. void timer1(void) interrupt 3 {
  78. TH1 = (65536-50000)/256;
  79. TL1 = (65536-50000)%256;
  80. tmp++;
  81. if(tmp==20){
  82. tmp=0;
  83. int_1=~int_1;
  84. if(++num_3==100){
  85. num_3=0;
  86. }
  87. procBuf();
  88. }
  89. }
复制代码
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-25 04:24 , Processed in 0.048400 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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