中易网

急求51单片机顺、倒计时60秒程序加注释下~好的话可再加财富!谢谢~!

答案:3  悬赏:80  
解决时间 2021-04-08 01:10
89c51单片机仿真
最佳答案
ORG 0000H
  START:MOV R0,#30

  MOV DPTR,#TABLE
  LOOP: LCALL DISPLAY
  EDC R0
  CJNE R0,#100,LOOP
  DISPLAY: MOV A,R0
  MOV B,#10
  DIV AB
  MOV R1,A
  MOV R2,B
  MOV R3,#50
  LOOP1: MOV A,R2
  LCALL CHANGE
  CLR P3.1
  LCALL DELAY
  SETB P3.1
  MOV A,R1
  LCALL CHANGE
  CLR P3.0
  LCALL DELAY
  SETB P3.0
  CLR A
  DJNZ R3,LOOP1
  CHANGE: MOVC A,@A+DPTR
  MOV P0,A
  RET

  DELAY: ;10ms延时
  MOV R6,#20
  D1: MOV R7,#248
  DJNZ R7,$
  DJNZ R6,D1
  RET

  TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

  END
  说明:P0口接数码管 p3.0 p3.1为位选
全部回答

程序:

 led_da equ p0  led_cs1 equ p3.0  led_cs2 equ p3.1  key equ p1.7  org 0000h  ajmp main  org 000bh  ajmp time0  org 0030h main:   mov r1,#6;  mov r0,#0  mov ie,#82h   ;初始化定时器,开总中断,开定时器中断  mov tmod,#02h  ;定时器0选择2方式  mov th0,#56    ;设初值,200个机械周期溢出一次  mov tl0,#56  mov r2,#50  mov r3,#100    ;设定中断计数(12mhz晶振),50*100*200*1us=1s  clr tr0    ;  mov dptr,#table   start:  acall display   ;数码管显示  acall check_key  ;检查按键并进行操作  ajmp start

display:  mov a,r1  movc a,@a+dptr  mov led_da,a  clr led_cs1  acall delay  setb led_cs1

 mov a,r0  movc a,@a+dptr  mov led_da,a  clr led_cs2  acall delay  setb led_cs2  ret

check_key:  jb key,return  acall delay  jb key,return  jb tr0,return  setb tr0 wait:   acall display  jnb key,return return: ret

time0:  djnz  r2,next  mov r2,#50  djnz r3,next  mov r3,#100

 dec r0  cjne r0,#0ffh,next  mov r0,#9

 dec r1  cjne r1,#0ffh,next  mov r0,#00h;  mov r1,#00h  clr tr0

next:   reti

delay:  mov r7,#248  djnz r7,$  ret

table:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,080h,90h  end

相关文件已经发到你邮箱了!请注意查收!

#include   typedef unsigned char uchar;   typedef unsigned int uint;   sbit ioResetCountValue = P1^0; //Reset gucInc/DecTimeValue   sbit ioChooseIncStatus = P1^1; //This Key Tell System it's Inc Order   sbit ioChooseDecStatus = P1^2; //This Key Tell System it's Dec Order   #define mTimerValue 50000 //50ms   uchar data gucIncTimeValue = 0;   uchar data gucDecTimeValue = 60;   uchar data guc50ms = 0;   bit bdata gbIncOder = 1; //ResetValue is 1,means it's Inc Order   void InitialSys(void) { //System Initial SubFuction   TMOD = 0x01; //TImer0 is 16bits Timer   TH0 = (65536 - mTimerValue) / 256;   TL0 = (65536 - mTimerValue) % 256;   TR0 = 1; //Do strat Timer0   EA = 1; //Open Final Interrupt Swith   ET0 = 1; //Open Timer0 Interrupt Switch   }   void IsrTimer0(void) interrupt 1 using 1 { //Timer0 Interrupt Service Routine   TR0 = 0;   TH0 = (65536 - mTimerValue) / 256;   TL0 = (65536 - mTimerValue) % 256;   TR0 = 1;   guc50ms++;   if(guc50ms == 20) { //20 * 50ms is 1s   guc50ms = 0;   if(gbIncOrder) {   gucIncTimeValue++;   if( gucIncTimeValue == 61 ) //Reset 60s   gucIncTimerValue = 0;   }   else {   gucDecTimeValue--;   if( gucDecTimeValue == 255 ) //Reset 60s   gucIncTimerValue = 60;   }   }   }   void Main(void) {   InitialSys();   while(1) {   if( !ioChooseIncStatus || !ioChooseDecStatus || !ioResetCountValue) {   DelayMs(15); //Clear The Key Disturb   if( !ioChooseIncStatus )   gbIncOder = 1;   else if( !ioChooseDecStatus )   gbIncOder = 0;   else if( !ioResetCountValue ) {   gucIncTimeValue = 0;   gucDecTImeValue = 60;   }   }   }   }   什么仿真?
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我是在问吗广州市牙膏批发市场具体地址
关于德国牧羊犬耳朵瘙痒有红血丝!!!
城厢区第二实验幼儿园什么时候注册
联想m7250 复印出来全部是黑色 还不能扫描。
和人交谈时,眼光应该放在对方身体哪个部位比
从成都梁家巷(北门客运站)到华阳客运站大概
怎么自动生成数列从1到100000000word上
平安保险保单交了半年能向普惠贷款?
悦翔dvd导航安装后,方向盘按键不好用
怎样在wps中将目录前面的用罗马数字后几页用
鱿鱼焖豆腐地址在什么地方,想过去办事
为什么连赵本山郭德纲成龙这种垃圾都有那么多
天天晚上不吃饭!喝丝瓜汤可以瘦身吗
如何天天酷跑卡出俱乐部
歌词 只想说一句,各自珍重
推荐资讯
唐山那里有期房可买 便宜点的
现在国产手机最贵最好的是什么牌子?多少钱一
冷战时,男人们都在想些什么呀?
厦门岛外好吗?厦门好不好(我是指工作方面)
粤语的音怎么读
未来e家装饰生活馆地址在什么地方,想过去办
我电信50兆的宽带,以前下载速度5-8m 实测。
贺兰县嘉乐幼儿园怎么去啊,有知道地址的么
squad全屏模式在哪里
纯天然土蜂蜜大约多少钱一斤?
数控车床代码G50设置工件坐标什么意思
灰色格子衬衫配什么颜色外套好看?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?