单片机补充案例--中断到底用不用

举报
zhangrelay 发表于 2021/07/14 23:27:59 2021/07/14
【摘要】 是否使用中断依据实际情况而定,并非是做题惯性,题目要求用就用,这种思想不适合工作。 下面两段程序都能实现实验二的要求,对比学习一下吧: 中断方式: /***************************************************************************** * 头文件 * *************************...

是否使用中断依据实际情况而定,并非是做题惯性,题目要求用就用,这种思想不适合工作。

下面两段程序都能实现实验二的要求,对比学习一下吧:

中断方式:


  
  1. /*****************************************************************************
  2. * 头文件 *
  3. *****************************************************************************/
  4. #include "8052.h"
  5. #define LSA P1_5
  6. #define LSB P1_6
  7. #define LSC P1_7
  8. void EXINT0() __interrupt 0;
  9. void EXINT1() __interrupt 2;
  10. void delay(unsigned int ms) //
  11. {
  12. unsigned int x;
  13. unsigned int y;
  14. for(x=ms;x>0;x--)
  15. for(y=110;y>0;y--)
  16. ;
  17. }
  18. /*****************************************************************************
  19. * 初始化和功能函数 *
  20. *****************************************************************************/
  21. void sys_init(void)
  22. {
  23. LSA=0;
  24. LSB=0;
  25. LSC=0;
  26. IT0=0;
  27. IT1=0;
  28. EA=1;
  29. EX0=1;
  30. EX1=1;
  31. }
  32. void Up2Down(int x)
  33. {
  34. int i, j;
  35. unsigned char sel=0x7f;
  36. for(i=0;i<x;i++)
  37. {
  38. for(j=0;j<8;j++)
  39. {
  40. P0 = sel;
  41. delay(125);
  42. sel=sel>>1|0x80;
  43. }
  44. sel=0x7f;
  45. }
  46. }
  47. void EXINT0() __interrupt 0
  48. {
  49. Up2Down(1);
  50. }
  51. void EXINT1() __interrupt 2
  52. {
  53. P0=0xFF;
  54. delay(125);
  55. P0=0x7F;
  56. delay(125);
  57. P0=0xFF;
  58. delay(125);
  59. }
  60. /*****************************************************************************
  61. * 主函数 *
  62. *****************************************************************************/
  63. void main(void)
  64. {
  65. sys_init();
  66. while(1)
  67. {
  68. P0=0x7F;
  69. }
  70. }

查询方式:


  
  1. /*****************************************************************************
  2. *头文件 *
  3. *****************************************************************************/
  4. #include "8052.h"
  5. #define LSA P1_5
  6. #define LSB P1_6
  7. #define LSC P1_7
  8. #define KEY0 P3_2
  9. #define KEY1 P3_3
  10. void delay(unsigned int ms) //延时
  11. {
  12. unsigned int x;
  13. unsigned int y;
  14. for(x=ms;x>0;x--)
  15. for(y=110;y>0;y--)
  16. ;
  17. }
  18. /*****************************************************************************
  19. *初始化和功能函数 *
  20. *****************************************************************************/
  21. void sys_init(void)
  22. {
  23. LSA=0;
  24. LSB=0;
  25. LSC=0;
  26. }
  27. void left(int x)
  28. {
  29. int i, j;
  30. unsigned char sel=0x7f;
  31. for(i=0;i<x;i++)
  32. {
  33. for(j=0;j<8;j++)
  34. {
  35. P0 = sel;
  36. delay(125);
  37. sel=sel>>1|0x80;
  38. }
  39. sel=0x7f;
  40. }
  41. }
  42. /*****************************************************************************
  43. * 主函数 *
  44. *****************************************************************************/
  45. void main(void)
  46. {
  47. sys_init();
  48. while(1)
  49. {
  50. if(KEY0&&KEY1)
  51. {
  52. P0=0x7F;
  53. }
  54. if(KEY0==0)
  55. {
  56. left(1);
  57. }
  58. if(KEY1==0)
  59. {
  60. P0=0xFF;
  61. delay(125);
  62. P0=0x7F;
  63. delay(125);
  64. P0=0xFF;
  65. delay(125);
  66. }
  67. }
  68. }

 

文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。

原文链接:zhangrelay.blog.csdn.net/article/details/110729285

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。