欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
單片機(jī)按鍵消抖動(dòng)和防干擾的例子-匯編程序
[打印本頁(yè)]
作者:
daniu
時(shí)間:
2014-12-27 17:26
標(biāo)題:
單片機(jī)按鍵消抖動(dòng)和防干擾的例子-匯編程序
;===============================================================
;程序編寫(xiě)人:蘭建文
;編寫(xiě)地點(diǎn):51hei培訓(xùn)機(jī)構(gòu)
;時(shí)間:2009年6月9日上午 星期二
;功能:本程序?qū)崿F(xiàn)P0口的對(duì)2個(gè)數(shù)碼管顯示0到99,一個(gè)按鍵實(shí)現(xiàn)一次
;按鍵只遞加1次,到99回到0,按著不動(dòng)不影響數(shù)碼管動(dòng)態(tài)顯示;任何時(shí)
;刻,任何一個(gè)按鍵,若按鍵時(shí)間超過(guò)3秒,循環(huán)顯示0到9回到0,時(shí)間
;間隔1秒。若時(shí)間小于1秒,顯示加1,低電平亮
;P2口實(shí)現(xiàn)對(duì)數(shù)碼管的片選功能
;===============================================================
;=========================開(kāi)始初始化============================
SHUCHU EQU P0 ;定義P0口為輸出口
PIANXUAN EQU P2 ;定義P2口為片選口
SHUZI EQU 30H ;設(shè)置處理數(shù)據(jù)存放地址
ANJIAN1 BIT 20H.0 ;設(shè)置按鍵標(biāo)志位
ANJIAN2 BIT 20H.1 ;設(shè)置按鍵標(biāo)志位
BIT0 BIT 20H.2 ;設(shè)置中斷定時(shí)器0標(biāo)志位
CHANGAN BIT 20H.3 ;設(shè)置長(zhǎng)按標(biāo)志位
LIANAN BIT 20H.4 ;設(shè)置連按標(biāo)志位
XIAN1 BIT 20H.5
XIAN2 BIT 20H.6
BIT4 BIT 20H.7
MODE EQU 01H
;========================程序開(kāi)始==============================
ORG 00H ;程序開(kāi)始
LJMP START ;跳到START
ORG 0BH ;中斷定時(shí)器0入口地址
JMP T0_1 ;跳到定時(shí)器0服務(wù)程序
ORG 0030H ;入口地址
;=========================主程序===============================
START:MOV SP,#70H ;移開(kāi)指針
MOV SHUZI,#00 ;數(shù)據(jù)初始化
MOV DPTR,#TAB ;查表初始化
CALL INIT ;開(kāi)中斷
CLR ANJIAN1 ;按鍵標(biāo)志位清0
CLR ANJIAN2 ;按鍵標(biāo)志位清0
CLR CHANGAN ;長(zhǎng)按標(biāo)志位清0
CLR LIANAN
CLR XIAN1
CLR XIAN2
CLR BIT4
SETB BIT0 ;中斷標(biāo)志位置1
MOV R0,#0
MOV R1,#0
MOV R2,#0
MOV R3,#0
MAIN:JNB BIT0,MAIN ;等待中斷
CLR BIT0 ;中斷標(biāo)志位清0
JB BIT4,VV
INC R3
CJNE R3,#50,XX
MOV R3,#00
MOV R2,#0
JMP DD
XX:CJNE R2,#3,VV
SETB LIANAN
MOV R2,#00
DD:CLR BIT4
VV:JB LIANAN,ZIJIAN
JB CHANGAN,ZIJIA ;長(zhǎng)按標(biāo)志位=1,循環(huán)顯示0-9;若不為0顯示鍵值加一
CALL JISUAN
CALL DISPLAY
JB ANJIAN2,JJ
JNB ANJIAN1,PANDUAN1
JNB P1.2,XIANSHI1
MOV R0,#00
CLR ANJIAN1
CLR XIAN1
CLR ANJIAN2
CLR XIAN2
JMP MAIN
JJ:JNB ANJIAN2,PANDUAN2
JNB P1.3,XIANSHI2
; SETB BIT4
INC R2
; MOV R3,#0
CLR ANJIAN1
CLR XIAN1
CLR ANJIAN2
CLR XIAN2
JMP MAIN
PANDUAN1:JB P1.3,YY
SETB BIT4
; INC R2
MOV R3,#0
SETB ANJIAN2
;JMP MAIN
YY:JB P1.2,MAIN ;若按鍵抬起則返回MAIN,若沒(méi)有抬起按鍵標(biāo)志位清0
SETB ANJIAN1
JMP MAIN
PANDUAN2:JB P1.2,ZZ
SETB ANJIAN1
JMP MAIN
ZZ:JB P1.3,MAIN ;若按鍵抬起則返回MAIN,若沒(méi)有抬起按鍵標(biāo)志位清0
SETB ANJIAN2
JMP MAIN
XIANSHI1:
INC R0
CJNE R0,#150,L6 ;若R0=150,長(zhǎng)按到達(dá)1秒,循環(huán)顯示0-9;不相等,則顯示鍵值加1
MOV R0,#00
SETB CHANGAN
L6:JB XIAN1,MAIN
SETB XIAN1 ;顯示標(biāo)志位清0
CALL JIACHULI ;加處理
JMP MAIN
XIANSHI2:
JB XIAN2,OUT
SETB XIAN2 ;顯示標(biāo)志位清0
CALL JIANCHULI ;加處理
OUT:JMP MAIN
ZIJIA:MOV A,SHUZI
CALL JIACHULI
CALL JISUAN
CALL DISPLAY
JMP MAIN
ZIJIAN:MOV A,SHUZI
CALL JIANCHULI
CALL JISUAN
CALL DISPLAY
JMP MAIN
;====================定時(shí)中斷0服務(wù)子程序========================
;輸入:無(wú)
;輸出:無(wú)
;實(shí)現(xiàn)的功能:實(shí)現(xiàn)定時(shí)20MS,影響標(biāo)志位T_BIT.
;===============================================================
T0_1:MOV TL0,#0E0H ;設(shè)置定時(shí)初值
MOV TH0,#0B1H
SETB BIT0 ;定時(shí)標(biāo)志位清0
RETI
;========================中斷設(shè)置子程序=========================
;輸入:無(wú)
;輸出:無(wú)
;實(shí)現(xiàn)的功能:初始化設(shè)置定時(shí)器,設(shè)置初值
;===============================================================
INIT:MOV TMOD,#MODE ;定時(shí)器0工作方式1
MOV TL0,#0E0H
MOV TH0,#0B1H
MOV IE,#82H ;開(kāi)定時(shí)器中斷0
SETB TR0 ;開(kāi)定時(shí)器0
RET
;========================計(jì)算子程序=============================
;輸入:30H
;輸出:"A和B"
;實(shí)現(xiàn)的功能:把30H的數(shù)據(jù)的十位和個(gè)位分離出來(lái)
;===============================================================
JISUAN:MOV A,SHUZI
MOV B,#10 ;除數(shù)放在B中
DIV AB ;商放在A中,余數(shù)放在B中
RET
;========================顯示子程序=============================
;輸入:"A"
;輸出:"P0口"
;實(shí)現(xiàn)的功能:把A的數(shù)輸出到P0口顯示,十位和個(gè)位分開(kāi)顯示
;===============================================================
DISPLAY:MOVC A,@A+DPTR ;查表
MOV SHUCHU,A ;顯示十位
MOV PIANXUAN,#04H ;片選
CALL DELAY
MOV SHUCHU,#0FFH
MOV A,B
MOVC A,@A+DPTR ;查表
MOV SHUCHU,A ;顯示個(gè)位
MOV PIANXUAN,#05H ;片選
CALL DELAY
MOV SHUCHU,#0FFH
RET
;======================加處理子程序=============================
;輸入:無(wú)
;輸出:無(wú)
;實(shí)現(xiàn)的功能:把30H地址加1
;===============================================================
JIACHULI:
MOV A,SHUZI
CJNE A,#99,L7
MOV SHUZI,#00
CLR CHANGAN
JMP L8
L7:INC SHUZI
L8:RET
;======================減處理子程序=============================
;輸入:無(wú)
;輸出:無(wú)
;實(shí)現(xiàn)的功能:把30H地址加1
;===============================================================
JIANCHULI:MOV A,SHUZI
CJNE A,#00,L9
MOV SHUZI,#99
CLR LIANAN
JMP LL
L9:DEC SHUZI
LL:RET
;========================延時(shí)程序===============================
;輸入;無(wú)
;輸出: 無(wú)
;實(shí)現(xiàn)的功能:延時(shí)一段時(shí)間
;===============================================================
DELAY:
MOV R6,#3
LL1:MOV R7,#250
DJNZ R7,$
DJNZ R6,LL1
RET
;=====================共陽(yáng)查表數(shù)據(jù)==============================
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;=======================程序結(jié)束================================
END
復(fù)制代碼
作者:
barons
時(shí)間:
2015-1-28 11:47
放干擾。很不錯(cuò)
作者:
feiji666
時(shí)間:
2018-10-29 18:35
很不錯(cuò),C語(yǔ)言?
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1