亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 01-15.asm

?? 基于51的多功能電子鐘,多鬧鐘,溫度測試
?? ASM
?? 第 1 頁 / 共 4 頁
字號:
    CLR SDA       ;發送應答信號的數據信號
    SETB SCL      ;發送應答信號的時鐘信號
    NOP           ; 等待》4.0US(即應答信號建立的時間大于4.0US)
    NOP
    NOP
    NOP
    NOP
                 ;發送應答信號完畢,數據線和時鐘線復位
    CLR SCL
    RET
END



;================================================================

;名稱:MNACK
;描述:發送反應答確認信號/ACK---讀完所有字節后發,這樣才能產生
;停止條件
;================================================================
PROC MNACK
MNACK:
     SETB SDA      ;發送反應答信號的數據信號

     SETB SCL
     ;發送應答信號的時鐘信號
     NOP           ;等待》4.0US(即非應答信號建立的時間大于4.0US)
     NOP
     NOP
     NOP
     NOP           ;
     CLR SCL
     RET
END




;================================================================
;名稱:CHECKACK
;描述:檢查是否有應答位---本程序,是單片機產生額外的第九個時鐘脈
;沖 ,在脈沖高電平時讀應答位,有正常ACK置F0為0,否則為1
;================================================================
PROC CHECKACK
CHECKACK:
     SETB SDA       ;拉高數據線
     NOP
     NOP
     SETB SCL       ;拉高時鐘線,第九個時鐘脈沖開始
     NOP
     NOP
     MOV C,SDA      ;讀數據線的狀態
     MOV FINISH,C   ;轉存到F0中(應答信號SDA為0,即F0=0有應答信號,F0=1沒應答信號)
     NOP
     NOP
     CLR SCL        ;拉低時鐘線,第九個時鐘脈沖結束
     RET
END




;--------------------------------------------------------------
;            星期顯示子程序
;--------------------------------------------------------------
PROC CONVER
CONVER:MOV A,#8DH       ; //星期顯示地址
       LCALL WRITE_COM
       MOV R7,#00H

GODIS: CLR A
       MOV A,R7
       MOVC A,@A+DPTR
       JZ LOOP
       LCALL WRITE_DATA
       INC DPTR
       CJNE A,#04H,GODIS
LOOP:  RET
       END

;===========================
;LCD顯示程序
;===========================
PROC DISP
DISP:
      MOV 60H,#20H
      MOV 65H,#3AH  ; //':'ASCII代碼
      MOV 67H,#3AH  ; //':'ASCII代碼
      MOV A,46H
      MOV 61H,A
      MOV A,45H
      MOV 62H,A
      MOV A,43H
      MOV 63H,A
      MOV A,42H
      MOV 64H,A
      MOV A,41H
      MOV 66H,A
      MOV A,40H
      MOV 68H,A
      MOV A,44H
      MOV 69H,A
;--------------------------------------------------------------
;             RT1602C開始顯示程序
;--------------------------------------------------------------
      MOV A,#81H   ;//年顯示地址,第一行第二位置開始
      LCALL WRITE_COM
      MOV R5,60H    ;//'20'送R5
      LCALL  BREAK
;--------------------------------------------------------------
      MOV A,#83H   ;//年顯示地址
      LCALL WRITE_COM
      MOV R5,61H    ;//'06'
      LCALL BREAK
;--------------------------------------------------------------
      MOV A,#85H        ;顯示"/"
      LCALL WRITE_COM
      MOV A,#02FH
      LCALL WRITE_DATA
;-------------------------------------------------------------
      MOV A,#86H   ;//月顯示地址
      LCALL WRITE_COM
      MOV R5,62H    ;//'09'
     LCALL BREAK
;--------------------------------------------------------------
      MOV A,#88H        ;顯示"/"
      LCALL WRITE_COM
      MOV  A,#02FH
      LCALL WRITE_DATA
;--------------------------------------------------------------
      MOV A,#89H   ;//日顯示地址
      LCALL WRITE_COM
      MOV R5,63H    ;//'09'
      LCALL BREAK
;--------------------------------------------------------------
      MOV A,#0C4H   ;//時顯示地址
      LCALL WRITE_COM
      MOV R5,64H    ;//'00'
      LCALL BREAK
;--------------------------------------------------------------
      MOV A,#0C6H   ;//":"顯示地址
      LCALL WRITE_COM
      MOV A,65H    ;//':'
      LCALL WRITE_DATA
;--------------------------------------------------------------
      MOV A,#0C7H   ;//分顯示地址
      LCALL WRITE_COM
      MOV R5,66H    ;//'00'
      LCALL BREAK
;--------------------------------------------------------------
      MOV A,#0C9H   ;//":"顯示地址
      LCALL WRITE_COM
      MOV A,67H    ;//':'
      LCALL WRITE_DATA
;--------------------------------------------------------------
      MOV A,#0CAH   ;//秒顯示地址
      LCALL WRITE_COM
      MOV R5,68H    ;//'00'
      LCALL BREAK
;--------------------------------------------------------------
       MOV R6,69H  ;=========星期顯示,轉換成字母顯示
SUNDAY:CJNE R6,#00H,MONDAY
       MOV DPTR,#TAB0
       LCALL CONVER
MONDAY:CJNE R6,#01H,TUESDAY
       MOV DPTR,#TAB1
       LCALL CONVER
TUESDAY:CJNE R6,#02H,WEDSDAY
       MOV DPTR,#TAB2
       LCALL CONVER
WEDSDAY:CJNE R6,#03H,THURSDAY
       MOV DPTR,#TAB3
       LCALL CONVER
THURSDAY:CJNE R6,#04H,FRIDAY
       MOV DPTR,#TAB4
       LCALL CONVER
FRIDAY:CJNE R6,#05H,SATURDAY
       MOV DPTR,#TAB5
       LCALL CONVER
SATURDAY:CJNE R6,#06H,ENDDISP
       MOV DPTR,#TAB6
       LCALL CONVER
ENDDISP:
       RET
END

;--------------------------------------------------------------
;         把要顯示的內容拆開分別送LCD顯示子程序
;--------------------------------------------------------------
PROC BREAK
BREAK:MOV A,R5
      SWAP A        ;//=====顯示十位
      ANL A,#0FH
      ADD A,#30H
      LCALL WRITE_DATA
      MOV A,R5       ; //=====顯示個位
      ANL A,#0FH
      ADD A,#30H
      LCALL WRITE_DATA
      RET
END




;---------------------------------------------
;鍵盤輸入子程序
;---------------------------------------------

PROC KEY
KEY:
     LCALL KEYCHECK          ;讀鍵盤狀態
                             ;檢查鍵盤有無輸入
     MOV A, KEYNAME
     JNB ACC.7, NEXT         ;ACC.7為0,鍵盤按鍵無效,就返回主程序
                             ;ACC.7為1,進入按鍵處理子程序
     MOV A, KEYNAME          ;讀按鍵值
     ANL A, #1FH             ;保留
     MOV KEYNAME, A          ;清除按鍵處理標志
     LCALL KEYDO             ;進入按鍵處理子程序

NEXT:RET
END

;-----------------------------------------------
;鍵盤檢測子程序
;-----------------------------------------------
PROC KEYCHECK
KEYCHECK:
    MOV DPTR, #PORTD         ;U105口地址送DPTR
    MOV A, PORTDR            ;讀U105口在內存中的映象地址
    ANL A, #0E0H             ;輸出全為低電平的掃描信號
    MOVX @DPTR, A            ;數據送U105輸出口,將PD4~PD0置為低電平

    MOV DPTR, #PORTB         ;8255(U107)B口地址送DPTR
    MOVX A, @DPTR            ;讀出B口
    ANL A, #0FH              ;屏蔽高4位
    CJNE A, #0FH, NEXT1
                             ;等于0F,說明沒有按鍵被按下
    SETB C                   ;將C標志置1
    SJMP NEXT21
NEXT1:
    CLR C                    ;C標志清0
NEXT21:
    MOV A, KEYSTU
    RLC A                    ;左移一位,記錄最新的按鍵狀態
    ANL A, #07H              ;保留按鍵狀態
    MOV KEYSTU, A            ;保存按鍵狀態
                             ;判別按鍵狀態,決定是否執行按鍵掃描
    CJNE A, #2, NEXT3
                             ;處于010態,視為按鍵過程中的無意松動,應作000態處理
    ANL KEYSTU, #0F8H
    SJMP NEXT4
NEXT3:
    CJNE A, #4, NEXT4
                             ;處于100態,說明按鍵已穩定閉合,可進行按鍵掃描
    LCALL KEYSCAN            ;執行鍵盤掃描,確定哪一按鍵被按下
NEXT4:
                             ;將PD4~PD0置為高電平,使74HC273輸出級截止,降低功耗。
    MOV DPTR, #PORTD         ;U105口地址送DPTR
    MOV A, PORTDR            ;讀U105口在內存中的映象地址
    ORL  A, #1FH
    MOVX @DPTR, A            ;數據送U105輸出口
    RET
END


;------------------------------------------------
;鍵盤掃描子程序
;-------------------------------------------------

PROC KEYSCAN                 ;鍵盤掃描程序
KEYSCAN:
    MOV R7, #5               ;定義掃描次數
    MOV R1, #0               ;初始化列地址
    MOV R3, #01111111B       ;掃描碼初值

LOOP1:
    ;生成掃描碼
    MOV A, R3
    RL A                     ;左移一位(從PD0開始掃描)
    MOV R3, A                ;保存掃描碼
    ANL A, #00011111B        ;保留掃描碼
    MOV B, A                 ;暫時保存在B寄存器中

    MOV DPTR, #PORTD         ;U105口地址送DPTR
    MOV A, PORTDR            ;讀U105口在內存中的映象地址
    ANL A, #0E0H             ;保留與鍵盤掃描無關的b7~b5位。
    ORL A, B                 ;與掃描碼或
    MOVX @DPTR, A            ;數據送U105輸出口,將PD4~PD0置為低電平
    NOP                      ;延遲一個機器周期等待輸出口狀態穩定

    MOV DPTR, #PORTB         ;B口地址送DPTR
    MOVX A, @DPTR            ;讀B口
    ANL A, #0FH              ;屏蔽高4位
    XRL A, #0FH              ;與0FH異或
    JNZ NEXT1                ;不為0,說明該列上有鍵被按下
    ;反之,該列上沒有按鍵被按下
    INC R1                   ;列地址加+1,繼續掃描
    DJNZ R7, LOOP1
    ;已掃描了所有列,均沒發現有鍵被按下,本次掃描無效
    SJMP EXIT

NEXT1:
    JNB ACC.0, NEXT22
    ;ACC.0位為1,說明0行有按鍵被按下
    MOV R2, #0               ;行地址為0
    SJMP NEXT5
NEXT22:
    JNB ACC.1, NEXT3
    ;ACC.1位為1,說明1行有按鍵被按下
    MOV R2, #1               ;行地址為1
    SJMP NEXT5
NEXT3:
    JNB ACC.2, NEXT4
    ;ACC.2位為1,說明2行有按鍵被按下
    MOV R2, #2               ;行地址為2
    SJMP NEXT5
NEXT4:
    ;Acc.2~Acc.0均為0,則可肯定是Acc.3為1
    MOV R2, #3               ;行地址為3
NEXT5:
    ;計算行列地址,查表取得鍵名
    MOV A, R1
    RL A
    RL A                   ;列地址乘4(每列對應4行)
    ADD A, R2              ;加行地址
    MOV DPTR, #KEYTAB
    MOVC A, @A+DPTR        ;查表獲取鍵值
    MOV KEYNAME, A         ;按鍵值送鍵名寄存器
    ORL KEYNAME, #80H      ;按鍵有效標志置1
    ;開蜂鳴器,響一短聲
    MOV DPTR, #8000H       ;開蜂鳴器
    MOV A, #0FFH
    MOVX @DPTR, A
    LCALL DEL10MS          ;響10ms,即250Ms
    MOV A,#0FFH
    MOVX @DPTR,A
EXIT:
    RET
END


;****** 啟動LCM子程序******
PROC INITIAL
INITIAL:
        MOV A,#01H
        LCALL WRITE_COM
        MOV A,#00111000B
	LCALL WRITE_COM
	MOV A,#00001100B
	LCALL WRITE_COM
	MOV A,#00000110B
	LCALL WRITE_COM
	RET
END

;******查詢忙碌標志信號子程序******
PROC CHECK_BUSY
CHECK_BUSY: 	PUSH ACC
BUSY_LOOP:
        MOV P2,#0FFH
	CLR E
	SETB R_W
	CLR RS
	SETB E
	MOV A, DB0_DB7
	CLR E
	JB ACC.7,BUSY_LOOP
	POP ACC
        RET
END

;****** 寫指令到LCM子程序******
PROC WRITE_COM
WRITE_COM:
 	LCALL CHECK_BUSY
	CLR E
	CLR RS
	CLR R_W
	SETB E
	MOV DB0_DB7,A
	CLR E
	RET
        END


;****** 寫數據到LCM子程序******
PROC WRITE_DATA
WRITE_DATA:
	LCALL CHECK_BUSY
	CLR E
	SETB RS
	CLR R_W
	SETB E
	MOV  DB0_DB7,A
	CLR E
	RET
        END


;===========================
;延時子程序
;==========================
PROC DEL10MS
DEL10MS:MOV R3,#10H
TX1:	MOV R4,#0FFH
        DJNZ R4,$
       	DJNZ R3,TX1
	RET
        END

PROC DEL5S
DEL5S: MOV DPTR ,#8000H
       MOV A,#01FH
       MOVX @DPTR,A
       MOV R7,#100
TX2:   LCALL KEYWAIT
       MOV A,KEYNAME
       CJNE A,#00H,EXIT
       LCALL DEL10MS
       DJNZ R7,TX2

EXIT:
       MOV DPTR,#8000H
       MOV A,#0FFH
       MOVX @DPTR,A
       MOV A,KEYNAME
       RET
END

PROC DEL2S
DEL2S:MOV R7,#50
TX3:  LCALL KEYCHECK
      MOV A,KEYNAME
      CJNE A,#00H,EXIT
      LCALL DEL10MS
      DJNZ R7,TX3
EXIT: MOV A,KEYNAME
      RET
END

TAB0:DB"Sun.",00H
TAB1:DB"Mon.",00H
TAB2:DB"Tue.",00H
TAB3:DB"Wed.",00H
TAB4:DB"Thu.",00H
TAB5:DB"Fri.",00H
TAB6:DB"Sat.",00H



;***********按鍵掃描碼、鍵值對應關系******************
KEYTAB:
DB 0FH		;掃描碼為0,即PD0與PB0交叉點對應數字鍵"F"
DB 0EH		;掃描碼為1,即PD0與PB1交叉點對應數字鍵"E"
DB 0DH		;掃描碼為2,即PD0與PB2交叉點對應數字鍵"D"
DB 0CH		;掃描碼為3,即PD0與PB3交叉點對應數字鍵"C"

DB 09H		;掃描碼為4,即PD1與PB0交叉點對應數字鍵"9"
DB 06H		;掃描碼為5,即PD1與PB1交叉點對應數字鍵"6"
DB 03H		;掃描碼為6,即PD1與PB2交叉點對應數字鍵"3"
DB 0BH		;掃描碼為7,即PD1與PB3交叉點對應數字鍵"B"

DB 08H		;掃描碼為8,即PD2與PB0交叉點對應數字鍵"8"
DB 05H		;掃描碼為9,即PD2與PB1交叉點對應數字鍵"5"
DB 02H		;掃描碼為A,即PD2與PB2交叉點對應數字鍵"2"
DB 15H		;掃描碼為B,即PD2與PB3交叉點對應數字鍵"0"

DB 07H		;掃描碼為C,即PD3與PB0交叉點對應數字鍵"7"
DB 04H		;掃描碼為D,即PD3與PB1交叉點對應數字鍵"4"
DB 01H		;掃描碼為E,即PD3與PB2交叉點對應數字鍵"1"
DB 0AH		;掃描碼為F,即PD3與PB3交叉點對應數字鍵"A"

DB 13H		;掃描碼為10,即PD4與PB0交叉點對應"↑"
DB 12H		;掃描碼為11,即PD4與PB1交叉點對應"Enter"
DB 11H		;掃描碼為12,即PD4與PB2交叉點對應"ESC"
DB 10H		;掃描碼為13,即PD4與PB3交叉點對應"↓"



;-----------------------------------------------------
;字符串
;----------------------------------------------------
LINE1:DB "ENTER:SETTING", 00H
LINE2:DB "ESC:EXIT",00H
LINE3:DB "ERROR INPUT",00H

LINE4:DB "1:TIME",00H
LINE5:DB "2:CLOCK ",00H
LINE6:DB "ESC:EXIT ",00H

LINE7:DB "TIME OUT" ,00H
LINE8:DB " ANY KEY TO EXIT",00H
LINE9:DB"ALARM(  )",00H
LINE10:DB"OK",00H
LINE11:DB"NO",00H


LINE12:DB"1:SET",00H
LINE13:DB"2:DEL  ESC:EXIT",00H

LINE14:DB"1:WEAKLY",00H
LINE15:DB"2:ONCE  3:DAILY",00H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一级视频免费观看在线| www.成人网.com| 欧美大片在线观看一区| 日本vs亚洲vs韩国一区三区| 在线播放欧美女士性生活| 亚洲福利电影网| 91精品国产美女浴室洗澡无遮挡| 日韩电影在线观看一区| 欧美一级日韩不卡播放免费| 久久99久久99| 国产精品天美传媒沈樵| 色欧美日韩亚洲| 视频一区视频二区在线观看| 日韩欧美国产麻豆| 国产成人综合在线播放| 亚洲欧洲美洲综合色网| 在线免费亚洲电影| 麻豆久久久久久| 欧美日韩一区二区在线观看视频| 奇米777欧美一区二区| 久久综合九色欧美综合狠狠| 成人精品视频一区二区三区尤物| 亚洲欧美精品午睡沙发| 91麻豆精品国产| 成人性视频免费网站| 亚洲精品欧美激情| 精品国产一区二区在线观看| 成人黄色在线看| 日韩av网站在线观看| 国产欧美一区二区三区在线看蜜臀| 色婷婷av一区| 国内成人自拍视频| 亚洲一二三级电影| 久久久精品一品道一区| 欧美性一二三区| 国产不卡视频在线播放| 肉色丝袜一区二区| 综合久久国产九一剧情麻豆| 欧美理论在线播放| 成人丝袜视频网| 日本中文一区二区三区| 国产精品麻豆欧美日韩ww| 欧美一区二区在线免费播放| 成人久久视频在线观看| 毛片av中文字幕一区二区| 亚洲欧美激情在线| 久久精品视频免费观看| 欧美日韩精品福利| 91网站最新网址| 国产精品自拍三区| 日韩成人av影视| 亚洲午夜免费福利视频| 国产精品久久久久永久免费观看| 日韩一区二区视频在线观看| 色偷偷88欧美精品久久久| 国产福利一区二区三区视频| 日韩成人精品在线| 亚洲国产欧美日韩另类综合 | 国产电影精品久久禁18| 日韩中文字幕一区二区三区| 亚洲精品成人a在线观看| 中文字幕成人在线观看| 26uuu色噜噜精品一区二区| 91精品视频网| 欧美区一区二区三区| 91在线国产观看| 波多野结衣视频一区| 国产麻豆精品theporn| 久久激五月天综合精品| 人人精品人人爱| 日韩av中文字幕一区二区| 一区二区三区在线观看动漫| 中文字幕在线免费不卡| 国产精品全国免费观看高清| 国产日本欧洲亚洲| 国产欧美日韩在线看| 国产偷国产偷精品高清尤物| 精品对白一区国产伦| 精品国偷自产国产一区| 精品少妇一区二区三区日产乱码| 日韩一二三区视频| 日韩精品资源二区在线| 欧美一个色资源| 日韩欧美国产不卡| 精品成人一区二区| 久久视频一区二区| 国产视频在线观看一区二区三区 | 国产在线国偷精品免费看| 免费成人小视频| 久久精品国产网站| 国产福利一区二区三区视频 | 午夜一区二区三区视频| 亚洲免费在线视频一区 二区| ...xxx性欧美| 亚洲大片精品永久免费| 青青草97国产精品免费观看无弹窗版| 蜜臀91精品一区二区三区 | 成人黄色大片在线观看| www.一区二区| 欧美日韩色一区| 欧美肥胖老妇做爰| 精品av久久707| 日本一区二区综合亚洲| 中文字幕中文字幕在线一区| 一区二区三区四区高清精品免费观看| 亚洲一区二区三区激情| 麻豆免费精品视频| av日韩在线网站| 欧美人与z0zoxxxx视频| 精品福利在线导航| 亚洲欧美另类小说| 蜜桃av一区二区三区| 成人一区二区三区视频| 欧美伊人精品成人久久综合97| 欧美一区二区三区公司| 国产日本一区二区| 午夜a成v人精品| 欧美精品一卡二卡| 久久网这里都是精品| 一区二区在线观看不卡| 久久成人麻豆午夜电影| 91色九色蝌蚪| 精品久久一二三区| 亚洲动漫第一页| 国产91对白在线观看九色| 欧美日韩在线一区二区| 久久精品在线免费观看| 亚洲成人一区二区在线观看| 国产精品一区二区三区网站| 欧美色图一区二区三区| 国产日产欧美一区二区三区| 日日夜夜一区二区| 97se亚洲国产综合在线| 欧美精品一区二区久久婷婷 | 色综合久久综合网97色综合| 欧美成人激情免费网| 一区二区三区四区国产精品| 国产一区二区在线看| 欧美色视频在线| 综合在线观看色| 国产曰批免费观看久久久| 欧美日韩视频在线一区二区| 国产三级三级三级精品8ⅰ区| 午夜激情综合网| 91年精品国产| 国产精品乱码人人做人人爱| 另类小说欧美激情| 欧美日产在线观看| 亚洲视频每日更新| 成人av在线网| 国产精品久久久久久久午夜片| 精品影视av免费| 日韩欧美激情一区| 日韩精品高清不卡| 欧美精品久久99久久在免费线| 一区二区三区产品免费精品久久75| 成人av免费在线播放| 欧美激情中文不卡| 国产剧情一区二区三区| 欧美大片免费久久精品三p| 日韩精品色哟哟| 7777精品伊人久久久大香线蕉超级流畅 | 色综合久久88色综合天天6| 国产日韩影视精品| 国产成人av在线影院| 国产日产欧产精品推荐色| 国产传媒欧美日韩成人| 久久久久9999亚洲精品| 国产成人午夜片在线观看高清观看| 26uuu久久综合| 国产乱人伦精品一区二区在线观看| 欧美mv日韩mv国产网站| 久久精工是国产品牌吗| 久久综合久久综合久久综合| 久久99国产精品麻豆| 久久综合色婷婷| 国产成人在线色| 日韩一区在线看| 色婷婷av一区二区三区软件 | jvid福利写真一区二区三区| 国产网站一区二区| 99久久伊人久久99| 亚洲美女少妇撒尿| 欧美日韩精品免费| 蜜桃视频在线观看一区| 精品免费视频.| 成人精品视频一区二区三区 | 精品久久国产老人久久综合| 久久99热国产| 国产精品毛片大码女人| 色婷婷av一区二区三区软件| 亚洲成人免费在线观看| 欧美一区二区三区视频在线 | 国产高清一区日本| 亚洲丝袜制服诱惑| 欧美日韩激情一区| 国产精品亚洲人在线观看| 国产精品电影一区二区三区| 欧美亚洲一区三区| 久久精品免费看|