久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1178|回復: 1
打印 上一主題 下一主題
收起左側

51單片機255倒計時器匯編程序調試遇到問題

[復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 buxiangzhuche 于 2021-12-17 19:49 編輯

255倒計時器的需求是,有s28(單刀開關),s29(按鈕)兩個控制構件,要求是s28低電位時,進入預設模式,有滑動電阻器輸入電壓,利用adc0808模數轉換,得到數字量,然后在8位數碼管最左3位動態顯示出來,s28高電位時,8位數碼管上最左邊3位顯示預設值,最右邊3位顯示實時倒計時值,按下s29(1下開始,2下暫停)開始倒計時,每一秒-1,減到0,則使蜂鳴器響30秒,然后8位數碼管最右邊重新顯示預設值,等待下一次倒計時。


自己寫的時候,遇到問題如下:①動態數碼管仿真顯示異常,s28接高電位可以顯示左右各3位,但是撥動到低電位只能顯示一位(正常是顯示左三位),利用的是同一個顯示子程序(寄存器值不同)。②s28只能從高電位切換回低電位(由低到高只顯示一位),且只有第一次有效,后面無論怎么撥動都只顯示一位,如①問題。③使用寄存器間接尋址,mov A,@R0,指向bcd碼緩存區時,指向異常,比如60H內有#01H,但是讀取的時候,a取到了0,inc r0,依次向后也是如此。接線圖以及單片機程序如下:
  1.         IOCON EQU 8003H
  2.         PORTA EQU 8000H
  3.         PORTB EQU 8001H
  4.         IN0   EQU 9000H               
  5.         BUF   EQU 60H  ;ad轉換讀入緩存
  6.         EOC   BIT P1.0
  7.         BIZ   BIT P1.1
  8.         S28   BIT P1.2
  9.         S29   BIT P3.2
  10.         
  11.         ORG 0000H
  12.         LJMP START
  13.         ORG 0200H
  14.                
  15.         ORG 0003H
  16.         JNB S28,out
  17.         CPL  TR0
  18.         out:
  19.         RETI
  20.         
  21.         ORG 000BH
  22.         INC R4 ;+1,重裝值
  23.         MOV TH0,#4EH
  24.         MOV TL0,#20H
  25.         CJNE R4,#20,leave
  26.         MOV R4,#00H
  27.         JNB F0,jishu
  28.         CLR BIZ
  29.         INC R5
  30.         CJNE R5,#30,leave
  31.         SETB BIZ
  32.         MOV A,R3 ;無法 MOV R2,R3
  33.         MOV R2,A
  34.         LCALL CON
  35.         CLR TR0
  36.         AJMP leave
  37.         jishu:
  38.         MOV A,R2
  39.         DEC A
  40.         MOV R2,A
  41.         MOV B,#100 ;開始計算
  42.         DIV AB
  43.         MOV 63H,A        ;63H 預設百位
  44.         MOV A,B
  45.         MOV B,#10
  46.         DIV AB
  47.         MOV 64H,A        ;64H 預設十位        
  48.         MOV 65H,B        ;65H 預設個位
  49.         CJNE R2,#00H,leave
  50.         SETB F0
  51.         leave:
  52.         RETI
  53.         
  54.         CON:
  55.         MOV 63H,60H
  56.         MOV 64H,61H
  57.         MOV 65H,62H
  58.         RET
  59.                
  60.         SHOW:
  61.         MOV R7,#80H        ;從第一位開始
  62.         MOV R0,#60H        ;緩存首地址
  63.         next:
  64.         LCALL DELAY
  65.         MOV A,@R0         ;送段碼
  66.         MOV DPTR,#TAB
  67.         MOVC A,@A+DPTR
  68.         MOV DPTR,#PORTA
  69.         MOVX @DPTR,A
  70.         INC R0        ;下一段
  71.         MOV A,R7        ;送位碼
  72.         CPL A
  73.         INC DPTR        ;指向portb
  74.         MOVX @DPTR,A
  75.         CPL A
  76.         RR A        ;下一位        
  77.         MOV R7,A
  78.         CJNE R7,#10H,gou
  79.         MOV R7,#04H
  80.         gou:
  81.         DJNZ R6,next
  82.         RET
  83.         
  84.         TAB: DB 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
  85.                
  86.         DELAY:
  87.         MOV R1,#0FFH
  88.         DJNZ R1,$
  89.         RET
  90.         
  91.         START:
  92.         MOV P0,#0FFH        ;準雙向口讀,先寫1
  93.         MOV P1,#0FFH
  94.         MOV P3,#0FFH
  95.         MOV DPTR,#IOCON        ;指向8255命令口
  96.         MOV A,#80H        ;PA、PB、PC設為基本輸出模式
  97.         MOVX @DPTR,A
  98.         MOV TMOD,#01H ;初始化T0定時器,11.1HZ頻率下,設為20000即可
  99.         MOV TH0,#4EH
  100.         MOV TL0,#20H
  101.         SETB EA
  102.         SETB ET0
  103.         SETB EX0
  104.         SETB IT0        ;下降沿觸發
  105.         pan:
  106.         JB S28, DJS ;是0,則進入設置計數值
  107.         MOV DPTR,#9000H        ;指向A/D的0通道
  108.         SETB EOC
  109.         MOVX @DPTR,A        ;啟動A/D轉換
  110.         JNB EOC,[        DISCUZ_CODE_17        ]nbsp;       ;沒轉換好則等待
  111.         MOVX A,@DPTR        ;讀A/D轉換值
  112.         MOV A,#107        ;測試用
  113.         MOV R2,A         ;用于倒計時
  114.         MOV R3,A         ;用于恢復計數值
  115.         MOV R4,#00H         ;用于計秒
  116.         MOV R5,#00H         ;用于計蜂鳴器
  117.         MOV B,#100;開始計算
  118.         DIV AB
  119.         MOV 60H,A        ;60H 預設百位
  120.         MOV 63H,A
  121.         MOV A,B
  122.         MOV B,#10
  123.         DIV AB
  124.         MOV 61H,A        ;61H 預設十位
  125.         MOV 64H,A
  126.         MOV 62H,B        ;62H 預設個位
  127.         MOV 65H,B
  128.         MOV R6,#03H ;顯示位數
  129.         LCALL SHOW
  130.         AJMP PAN
  131.         djs:
  132.         MOV R6,#06H ;顯示位數
  133.         LCALL SHOW
  134.         AJMP PAN
  135.         END
復制代碼


                end.zip (203.6 KB, 下載次數: 6)


為了便于各位大佬前輩調試,源碼及protues8.9工程文件一并附上了,十分感謝。
        



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:301191 發表于 2021-12-17 22:47 | 只看該作者
頂一下
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国内精品一区二区 | 黄色在线免费观看视频网站 | 久久精品中文字幕 | 伊人电影院av | 久久99网站 | 久久免费观看一级毛片 | 欧美精品一区二区三区在线 | 精品国产一区探花在线观看 | 中日字幕大片在线播放 | 国产伦精品一区二区三区四区视频 | 欧美激情五月 | 亚洲免费一区 | 日韩视频区 | 欧美精品一区二区三区四区 在线 | 91就要激情 | 在线播放一区 | 一区二区成人 | 精品久久久久一区二区国产 | 久久一级 | 小早川怜子xxxxaⅴ在线 | 日韩中文字幕一区二区 | 亚洲国产成人精品女人久久久 | 国产精品综合色区在线观看 | 国产精品无码专区在线观看 | www.婷婷| 成人a视频在线观看 | 日韩在线国产 | 久久精片 | 大象视频一区二区 | 少妇性l交大片免费一 | 国产精品爱久久久久久久 | av在线播放一区二区 | 精品久久久久久久 | 精品欧美一区二区三区免费观看 | 成年人免费在线视频 | 国产精品视频区 | 国产人成精品一区二区三 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 日韩精品在线视频免费观看 | 日韩视频在线播放 | 成年免费在线观看 |