找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4035|回复: 8
打印 上一主题 下一主题
收起左侧

初学中断,如何用TO中断写出,按键KEY3控制P0.0口LED类似于下列的程序?

[复制链接]
跳转到指定楼层
楼主
ID:102056 发表于 2016-10-25 22:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 king@ 于 2016-10-26 10:31 编辑

#include<reg52.h>
sbit led = P0^0;
sbit key1 = P3^2;
void main()
{
  
  led = 1;
  EA = 1;
  EX0 = 1;
  TCON = 0x01;
  while(1);
}
void External_interrupt_0() interrupt 0
  {
    led = !led;
  }   


QQ截图20161025221052.png (102.79 KB, 下载次数: 88)

QQ截图20161025221052.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2016-10-25 23:43 | 只看该作者
发贴是向大家展示?
回复

使用道具 举报

板凳
ID:102056 发表于 2016-10-26 10:41 来自触屏版 | 只看该作者
yzwzfyz 发表于 2016-10-25 23:43
发贴是向大家展示?

发帖是为了向大家展示问题
回复

使用道具 举报

地板
ID:123732 发表于 2016-10-26 14:23 | 只看该作者
  1. /*********************************************************************************************
  2. 编写:刘海龙
  3. 程序名:定时器中断控制led闪烁
  4. 硬件支持:
  5. 2016.10.26
  6. /*********************************************************************************************/
  7. #include<reg52.h>
  8. unsigned char m;
  9. sbit led = P1^7;
  10. sbit key3 = P1^2;//key3按下灯会亮500毫秒灭500毫秒、key3再次按下灯保持状态
  11. /*******************************************/
  12. void delay1ms (unsigned int a){ // 1ms延时程序
  13.         unsigned int i;
  14.         while( --a != 0){
  15.                 for(i = 0; i < 125; i++);//STC单片机在外部晶振为12MHz时i值上限为600  
  16.         }                                                       //AT89C51单片机在外部晶振为12MHz时i值上限为125
  17. }

  18. void main(void)
  19. {
  20.                  TMOD = 0x11;         // 定时/计数器0,1工作于方式1   
  21.             TH0 = 0x3c;          // 预置产生50ms时基信号   
  22.             TL0 = 0xb0;   
  23.             EA = 1;                                 // 开总中断
  24.                 TF0= 0;                 
  25.                     ET0 = 1;             // 定时/计数器0允许中断   
  26.             TR0 = 0;             // 开闭定时/计数器0  
  27.          while (1)
  28.          {
  29.                  if(key3==0)
  30.                  {        //K3按下计时器计时/停止
  31.                      delay1ms(10);
  32.                          if(key3==0)
  33.                          {
  34.                                   TR0 = ~TR0;//计时器计时/停止
  35.                                   while(!key3);
  36.                          }
  37.                  }

  38.          }                           
  39. }
  40. /*************************************************/
  41. void tiem0(void) interrupt 1 //50毫秒@12.000MHz
  42. {  
  43.         m++;
  44.        
  45.         if (m>9)//500毫秒到
  46.         {
  47.                 m=0;
  48.                 led=~led; //led亮500毫秒灭500毫秒

  49.         }
  50.         TL0 = 0xB0;                //设置定时初值
  51.         TH0 = 0x3C;                //设置定时初值
  52. }
复制代码
回复

使用道具 举报

5#
ID:123732 发表于 2016-10-26 18:45 | 只看该作者
本帖最后由 刘海龙 于 2016-10-26 20:10 编辑

发的例程正在审核中
回复

使用道具 举报

6#
ID:102056 发表于 2016-10-26 19:50 | 只看该作者

这个文件打开用不了,请尽量发尾缀是.c的文件
回复

使用道具 举报

7#
ID:144658 发表于 2016-10-26 22:33 | 只看该作者
我不知道为什么终端一直没效果
回复

使用道具 举报

8#
ID:102056 发表于 2016-10-27 19:47 | 只看该作者

程序编译成功,仿真到达理想效果。非常感谢!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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