4回答

0收藏

[原创] 单片机汇编学习

51单片机 51单片机 4383 人阅读 | 4 人回复 | 2014-10-15

本帖最后由 又一个暑假 于 2014-10-15 15:41 编辑
  1.        K1          bit           P2.3
  2.                
  3.         key_state        EQU                20H
  4.         key_step        EQU                21H
  5.         
  6.         ORG         0000H
  7.         SJMP        STAR
  8.         ORG            1BH
  9.         LJMP        Timer0_intrrupt  ;装T1中断服务程序

  10. star:        
  11.     mov  key_state,#00H
  12.         mov  key_step,#00H
  13.         mov  P1,#0ffH
  14.         
  15.         mov  IE,#88H  ;
  16.         mov         TMOD,#10H
  17.         mov         TH1,#0D8H
  18.         mov         TL1,#0EFH
  19.         setb TR1   ;启动T18
  20.         setb EA
  21.         
  22. loop:

  23. key_switch:
  24.     jb   key_step.0, key_low_step1
  25.         jb   key_step.1, key_low_step2
  26.         jb   key_step.2, key_low_step3
  27.         jb   key_step.3, key_low_step4
  28.         jb   key_step.4, key_low_step5
  29.         jb   key_step.5, key_low_step6
  30.         jb   key_step.6, key_low_step7
  31.         jb   key_step.7, key_low_step8
  32.       
  33. key_low_step0:
  34.         mov  P1,#00H    ; 上电就执行的任务不一定是点LED灯
  35.         jmp  loop
  36.                
  37. key_low_step1:
  38.         mov  P1,#01H    ;任务一  不一定是点LED灯
  39.         jmp  loop
  40.         
  41. key_low_step2:
  42.         mov  P1,#02H    ;任务二  不一定是点LED灯
  43.         jmp  loop
  44.         
  45. key_low_step3:
  46.         mov  P1,#04H        ;;任务三  不一定是点LED灯
  47.         jmp  loop
  48.         
  49. key_low_step4:
  50.         mov  P1,#08H    ;任务四  不一定是点LED灯
  51.         jmp  loop
  52.         
  53. key_low_step5:
  54.         mov  P1,#10H    ;任务五 不一定是点LED灯
  55.         jmp  loop
  56. key_low_step6:
  57.         mov  P1,#20H        ;任务六  不一定是点LED灯
  58.         jmp  loop
  59.         
  60. key_low_step7:
  61.         mov  P1,#40H        ;任务七  不一定是点LED灯
  62.         jmp  loop
  63.         
  64. key_low_step8:
  65.         mov  P1,#80H        ;任务八  不一定是点LED灯
  66.         jmp  loop


  67. key_check:
  68.         jb         K1,key_high
  69.         
  70. key_low:
  71.         jb         key_state.0,key_unchange
  72.         setb key_state.0
  73.         ret
  74.                
  75. key_high:
  76.         mov  key_state,#00H
  77.         mov  a,key_step
  78.         cjne a,#00H,exit
  79.         mov  P1,#00H
  80. exit:        ret
  81.         
  82. key_unchange:
  83.     jb   key_state.1,exit
  84.         setb key_state.1
  85.         mov  a,key_step
  86.         jz   key_unchange11
  87. key_unchange1:   
  88.     rl  a
  89.         mov  key_step,a
  90.         ret        
  91. key_unchange11 :
  92.     mov key_step,#01H
  93.         ret        
  94.         
  95. Timer0_intrrupt:  
  96.     clr  EA
  97.     mov        TH1,#0D8H
  98.         mov        TL1,#0EFH
  99.         acall key_check               
  100.         setb EA
  101. exit_interrupt:        
  102.     reti

  103. END
复制代码

/***********************************************************************************
*  程序功能: 通过按键实现切换任务,这里用点亮不同的LED灯来模拟
************************************************************************************/

分享到:
回复

使用道具 举报

回答|共 4 个

倒序浏览

沙发

Ares丶ST

发表于 2014-10-15 16:06:36 | 只看该作者

感谢楼主分享
板凳

Ares丶ST

发表于 2014-10-15 16:07:47 | 只看该作者

51基本上都是用C啊汇编对于新手太难了
地板

又一个暑假

发表于 2014-10-15 16:15:33 | 只看该作者

Ares丶ST 发表于 2014-10-15 16:07
51基本上都是用C啊汇编对于新手太难了

我也是学了一点,分享出来大家一起学习
5#

党国特派员

发表于 2015-8-11 23:26:19 | 只看该作者

感谢楼主分享
喜欢在构思妙想,电子产品DIY是工作,也是一种爱好。
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条