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

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

?? ir-12864lcd.asm

?? 買板子時贈的實驗例子
?? ASM
字號:
;********************************************************************************
;*  標題:  ME300系列單片機開發系統演示程序 - 12864LCD顯示遙控鍵值讀取器         *
;*  硬件: ME300A+,ME300B                                                       *
;*  文件:  IR_12864LCD.asm                                                      *
;*  日期:  2005-3-20                                                            *
;*  版本:  1.0                                                                  *
;*  作者:  gguoqing                                                             *
;*  郵箱:  gguoqing@willar.com                                                  *
;*  網站: http://www.willar.com                                                *
;********************************************************************************
;*  描述:                                                                       *
;*         12864LCD(帶漢字庫)顯示遙控鍵值讀取器                                 *
;*         P0口為TS12864A-3的數據 D0-D7                                         *
;*         K17鍵按下,繼電器吸合。K19鍵按下,繼電器關閉                         *
;*         顯示程序在中斷服務程序之中                                           *
;********************************************************************************
;*  跳線設置:                                                                  *
;*     ME300A+    JP1 全部短接,JP2短接1-2端                                    *
;*     ME300B     JP1 短接,JP2短接1-2端,JP4的P32需要短接                      *  
;*                                                                              *
;********************************************************************************
;* 【版權】 Copyright(C)偉納電子 www.willar.com  All Rights Reserved            *
;* 【聲明】 此程序僅用于學習與參考,引用請注明版權和作者信息!                  *
;********************************************************************************


        IRCOM  EQU  20H       ;20H-23H IR使用
        X     EQU  26H        ;LCD 地址變量

        IRIN   EQU  P3.2
        BEEP   EQU  P3.7
        RELAY  EQU  P1.3

        RS	EQU	P2.0
        RW	EQU	P2.1
        EN 	EQU	P2.2
        PSB	EQU	P2.3
        RST	EQU	P2.5
;------------------------------------------------
         ORG 0000H
         JMP  MAIN

         ORG 0003H         ;外部中斷INT0入口地址
         JMP  IR_IN        ;中斷服務程序
;------------------------------------------------
MAIN:
          MOV   SP,#40H
          MOV   A,#00H
          MOV   R0,#20H
LOOP0:    MOV   @R0,A          ;20H-26H清零
          INC   R0
          CJNE  R0,#27H,LOOP0
          MOV  IE,#81H       ;允許總中斷中斷,使能 INT0 外部中斷
          MOV  TCON,#01H     ;觸發方式為脈沖負邊沿觸發
          SETB  IRIN
          SETB	RST
	  NOP
	  SETB	PSB            ;8位數據,并口

          CALL  SET_LCD        ;初始化TS12864A-3
          CALL  MENU1
          CALL  MENU2
          CALL  MENU3
          CALL  MENU4
LOOP1:
          MOV  A,22H
          CJNE  A,#40H,LOOP2    ;K17鍵按下
          CLR   RELAY           ;繼電器吸合
LOOP2:    CJNE  A,#04H,LOOP3    ;K19鍵按下
          SETB  RELAY           ;繼電器關閉
LOOP3:    JMP   LOOP1

;=============================================
;  LCD 初始化設置
;=============================================-
SET_LCD:
          CLR  EN
          MOV  A,#34H     ;34H--擴充指令操作
          CALL  WCOM
          CALL  DELAY1
          MOV  A,#30H     ;30H--基本指令操作
          CALL  WCOM
          CALL  DELAY1

          MOV  A,#0CH     ;開顯示,關光標,
          CALL  WCOM
          CALL  DELAY1
          MOV  A,#01H     ;清除 LCM 顯示屏
          CALL  WCOM
          CALL  DELAY1
          RET
;===================================================
;在 LCM 各行顯示信息字符
;===================================================
LCD_SHOW:

          CJNE  A,#1,LINE2  ;判斷是否為第一行
  LINE1:  MOV  A,#80H       ;設置 LCD 的第一行地址
          CALL  WCOM        ;寫入命令
          CALL  CLR_LINE    ;清除該行字符數據
          MOV  A,#80H       ;設置 LCD 的第一行地址
          CALL  WCOM        ;寫入命令
          JMP  FILL

  LINE2:  CJNE  A,#2,LINE3  ;判斷是否為第三行
          MOV  A,#090H      ;設置 LCD 的第三行地址
          CALL  WCOM        ;寫入命令
          CALL  CLR_LINE    ;清除該行字符數據
          MOV  A,#090H      ;設置 LCD 的第三行地址
          CALL  WCOM
          JMP  FILL

  LINE3:  CJNE  A,#3,LINE4  ;判斷是否為第三行
          MOV  A,#088H      ;設置 LCD 的第三行地址
          CALL  WCOM        ;寫入命令
          CALL  CLR_LINE    ;清除該行字符數據
          MOV  A,#088H      ;設置 LCD 的第三行地址
          CALL  WCOM
          JMP  FILL

  LINE4:  CJNE  A,#4,LINE5  ;判斷是否為第三行
          MOV  A,#098H      ;設置 LCD 的第三行地址
          CALL  WCOM        ;寫入命令
          CALL  CLR_LINE    ;清除該行字符數據
          MOV  A,#098H      ;設置 LCD 的第三行地址
          CALL  WCOM

  FILL:   CLR  A            ;填入字符
          MOVC  A,@A+DPTR   ;由消息區取出字符
          CJNE  A,#0,LC1    ;判斷是否為結束碼
  LINE5:  RET
  LC1:    CALL  WDATA       ;寫入數據
          INC  DPTR         ;指針加1
          JMP  FILL         ;繼續填入字符
          RET
;=================================================
;清除該行 LCM 的字符
;=================================================
CLR_LINE:
          MOV  R0,#16      ;
   CL1:   MOV  A,#' '
          CALL  WDATA
          DJNZ  R0,CL1
          RET
;==================================================
;LCM 顯示工作菜單信息
;==================================================
MENU1:
         MOV   DPTR,#MENU1A
         MOV   A,#1         ;在第一行顯示信息
         CALL  LCD_SHOW
         RET
MENU1A:  DB  "紅外遙控碼讀取器",0

MENU2:
         MOV   DPTR,#MENU2A
         MOV   A,#2         ;在第二行顯示信息
         CALL  LCD_SHOW
         RET
MENU2A:  DB  "--www.willar.com",0

MENU3:
         MOV   DPTR,#MENU3A
         MOV   A,#3         ;在第三行顯示信息
         CALL  LCD_SHOW
         RET
MENU3A:  DB  "鍵值編碼:- - H",0

MENU4:
         MOV   DPTR,#MENU4A
         MOV   A,#4         ;在第四行顯示信息
         CALL  LCD_SHOW
         RET
MENU4A:  DB  "鍵值反碼:- - H",0

;==============================================
; 寫指令使能子程序
;RS=L,RW=L,D0-D7=指令碼,E=高脈沖
;==============================================
WCOM:
          MOV  P0,A
          CLR RS
          CLR RW
          SETB EN
          CALL  DELAY0
          CLR EN
          RET
;=============================================
;寫數據使能子程序
;RS=H,RW=L,D0-D7=數據,E=高脈沖
;=============================================
WDATA:
          MOV   P0,A
          SETB  RS
          CLR   RW
          SETB  EN
          CALL  DELAY0
          CLR   EN
          RET

DELAY0:   MOV  R7,#250      ;延時500微秒
          DJNZ  R7,$
          RET
;===============================================
;在 LCM 第三行、第四行顯示字符
;A=ASC DATA, B=LINE X POS
;===============================================
LCDP3:                    ;在LCD的第三行顯示字符
         PUSH  ACC        ;
         MOV  A,B         ;設置顯示地址
         ADD  A,#088H     ;設置LCD的第三行地址
         CALL  WCOM       ;寫入命令
         POP  ACC         ;由堆棧取出A
         CALL  WDATA      ;寫入數據
         RET

LCDP4:                    ;在LCD的第四行顯示字符
         PUSH  ACC        ;
         MOV  A,B         ;設置顯示地址
         ADD  A,#098H     ;設置LCD的第四行地址
         CALL  WCOM       ;寫入命令
         POP  ACC         ;由堆棧取出A
         CALL  WDATA      ;寫入數據
         RET
;=================================================
; IR 譯碼子程序
;中斷服務程序
;=================================================
IR_IN:
          CLR EA         ;暫時關閉CPU的所有中斷請求
          PUSH  ACC
          PUSH  PSW
          SETB  PSW.3     ;選擇工作寄存器組1
          CLR   PSW.4

          MOV   R0,#IRCOM
          MOV  R1,#04H
I1:       JNB  IRIN,I2       ;等待 IR 信號出現
          LCALL CONV
          DJNZ  R1,I1
          JMP  IR_OUT
 I2:      MOV  R4,#20
 I20:     CALL  DEL
          DJNZ  R4,I20
          JB  IRIN,I1        ;確認IR信號出現
 I21:     JB  IRIN,I3        ;等 IR 變為高電平
          CALL  DEL
          JMP  I21
 I3:      MOV  R3,#0         ;8位數清為0
 LL:      JNB  IRIN,I4       ;等 IR 變為低電平
          CALL  DEL
          JMP  LL
 I4:      JB  IRIN,I5        ;等 IR 變為高電平
          CALL  DEL
          JMP  I4
 I5:      MOV  R2,#0         ;0.14ms 計數
 L1:      CALL  DEL
          JB  IRIN, N1       ;等 IR 變為高電平
                             ;IR=0,檢查R2中的計數值
          MOV  A,#8
          CLR  C
          SUBB  A,R2         ;判斷高低位
                             ;IF C=0  BIT=0
          MOV  A,@R0
          RRC  A
          MOV  @R0,A         ;處理完一位
          INC  R3
          CJNE  R3,#8,LL     ;需處理完8位
          MOV  R3,#0
          INC  R0
          CJNE  R0,#24H,LL   ;收集到4字節了
          JMP   IR_SHOW
 N1:      INC  R2
          CJNE  R2,#30,L1    ;0.14ms 計數過長則時間到自動離開

IR_OUT:   POP  PSW
          POP  ACC
          SETB  EA
          RETI

;------------------------------------------------------------------
IR_SHOW:
          MOV A,22H
          CPL A                ;將22H取反后和23H比較
          CJNE A,23H,IR_SHOW1  ;如果不等表示接收數據發生錯誤,放棄。
          CALL   CONV
          CALL  BEEP_BL        ;蜂鳴器鳴響表示解碼成功
IR_SHOW1:
          JMP  IR_OUT
;===============================================
;編碼轉換為 ASCII 碼并顯示
;===============================================
CONV:
          MOV   X,#5        ;設置顯示起始位置
          MOV   A,22H
          ANL   A,#0F0H      ;取出高四位二進制數
          SWAP  A            ;高四位與低四位互換
          PUSH  ACC          ;壓入堆棧
          CLR   C            ;C=0
          SUBB  A,#0AH       ;減10
          POP   ACC          ;彈出堆棧
          JC    ASCII0       ;該數小于10,轉ASCII0
          ADD   A,#07H       ;大于10的數加上37H
ASCII0:   ADD   A,#30H       ;小于10的數加上30H
          MOV   B,X
          CALL  LCDP3

          MOV   A,22H
          ANL   A,#0FH        ;取出低四位二進制數
          PUSH  ACC
          CLR   C
          SUBB  A,#0AH        ;減10
          POP   ACC
          JC    ASCII1        ;該數小于10,轉ASCII0
          ADD   A,#07H        ;大于10的數加上37H
ASCII1:   ADD   A,#30H        ;小于10的數加上30H
          INC   X
          MOV   B,X
          CALL  LCDP3

          MOV   X,#5         ;設置顯示起始位置
          MOV   A,23H        ;反碼
          ANL   A,#0F0H      ;取出高四位二進制數
          SWAP  A            ;高四位與低四位互換
          PUSH  ACC          ;壓入堆棧
          CLR   C            ;C=0
          SUBB  A,#0AH       ;減10
          POP   ACC          ;彈出堆棧
          JC    ASCII2       ;該數小于10,轉ASCII0
          ADD   A,#07H       ;大于10的數加上37H
ASCII2:   ADD   A,#30H       ;小于10的數加上30H
          MOV   B,X
          CALL  LCDP4

          MOV   A,23H
          ANL   A,#0FH        ;取出低四位二進制數
          PUSH  ACC
          CLR   C
          SUBB  A,#0AH        ;減10
          POP   ACC
          JC    ASCII3        ;該數小于10,轉ASCII0
          ADD   A,#07H        ;大于10的數加上37H
ASCII3:   ADD   A,#30H        ;小于10的數加上30H
          INC   X
          MOV   B,X
          CALL  LCDP4
          RET
;===================================================
;蜂鳴器響一聲子程序
;===================================================
BEEP_BL:
         MOV  R6,#100
  BL1:   CALL  DEX1
         CPL  BEEP
         DJNZ  R6,BL1
         MOV  R5,#25
         CALL  DELAY
         RET
 DEX1:   MOV  R7,#180
 DEX2:   NOP
         DJNZ  R7,DEX2
         RET
 DELAY:                    ;延時R5×10MS
         MOV  R6,#50
  D1:    MOV  R7,#100
         DJNZ  R7,$
         DJNZ  R6,D1
         DJNZ  R5,DELAY
         RET
;===============================================
; DELAY  R5*0.14MS
DEL:
          MOV  R5,#1       ;IR解碼使用
DEL0:     MOV  R6,#2
DEL1:     MOV  R7,#32
DEL2:     DJNZ  R7,DEL2
          DJNZ  R6,DEL1
          DJNZ  R5,DEL0
          RET

DELAY1:                    ;延時5MS
         MOV  R6,#25
  DL2:   MOV  R7,#100
         DJNZ  R7,$
         DJNZ  R6,DL2
         RET
;================================================
        END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本女人一区二区三区| 亚洲欧美日韩久久精品| 国产精品动漫网站| 天天av天天翘天天综合网| 国产一区二区三区四区五区入口 | 午夜精品123| 国v精品久久久网| 欧美精品色综合| 亚洲免费在线看| 国产91在线看| 精品99999| 免费成人av在线| 欧美日韩一区二区欧美激情| 日韩一区在线免费观看| 国产精品夜夜爽| 日韩午夜在线播放| 日本伊人色综合网| 欧美日精品一区视频| 亚洲免费毛片网站| 91免费观看视频| 国产精品久久久久久久久免费桃花 | 国产伦精品一区二区三区在线观看| 欧美亚洲禁片免费| 亚洲伦理在线精品| 成人教育av在线| 欧美经典三级视频一区二区三区| 久久丁香综合五月国产三级网站 | 色视频一区二区| 综合网在线视频| 91色九色蝌蚪| 亚洲与欧洲av电影| 欧美日韩在线播放三区四区| 亚洲一二三区不卡| 欧美日韩一区二区在线视频| 亚洲一本大道在线| 欧美精选午夜久久久乱码6080| 亚洲国产sm捆绑调教视频 | 色噜噜狠狠一区二区三区果冻| 国产精品久久久久久户外露出| 成人av在线网站| 亚洲色图在线播放| 欧美亚洲一区二区在线观看| 亚洲成va人在线观看| 91精品国产麻豆国产自产在线 | 成人中文字幕在线| 亚洲欧洲av在线| 欧美日韩一级片网站| 丝袜亚洲另类丝袜在线| 精品少妇一区二区三区在线播放 | 色婷婷av久久久久久久| 中文字幕中文字幕一区| 色天天综合色天天久久| 免播放器亚洲一区| 久久久不卡网国产精品二区 | 国内精品视频666| 中文在线免费一区三区高中清不卡| k8久久久一区二区三区| 亚洲成人精品一区| 久久免费国产精品| 94色蜜桃网一区二区三区| 亚洲精品成a人| 日韩欧美一级片| a亚洲天堂av| 亚洲成人av电影在线| 欧美大片拔萝卜| 91网址在线看| 蜜桃在线一区二区三区| 亚洲欧洲成人精品av97| 91精品欧美一区二区三区综合在| 国产大陆亚洲精品国产| 亚洲国产精品久久久男人的天堂 | 日韩免费性生活视频播放| 成人开心网精品视频| 香蕉久久夜色精品国产使用方法| 久久久www成人免费毛片麻豆 | 欧美激情一区三区| 欧美精品少妇一区二区三区| 成人免费三级在线| 美女精品自拍一二三四| 亚洲精品网站在线观看| 久久综合丝袜日本网| 欧美视频完全免费看| 国产成人av一区二区三区在线 | 91豆麻精品91久久久久久| 黄一区二区三区| 香蕉加勒比综合久久 | 国产精品视频看| 日韩精品一区二区在线| 欧美性一区二区| 不卡欧美aaaaa| 国产乱对白刺激视频不卡| 五月综合激情婷婷六月色窝| 国产精品欧美极品| 久久亚洲一级片| 欧美一区日韩一区| 欧美午夜一区二区三区| 99re热这里只有精品视频| 国产成人亚洲精品青草天美| 蜜桃精品视频在线观看| 亚洲高清视频在线| 亚洲一区二区三区视频在线| 亚洲人成精品久久久久久| 久久综合丝袜日本网| 精品国产青草久久久久福利| 欧美日韩www| 欧美视频日韩视频在线观看| 色香蕉久久蜜桃| 91国偷自产一区二区三区观看| 成人免费毛片片v| 成人免费视频一区| 不卡高清视频专区| 91色在线porny| 欧美在线短视频| 在线一区二区三区四区五区 | 国产三级欧美三级日产三级99 | 国产成人亚洲精品青草天美| 国产一区二区在线看| 精久久久久久久久久久| 精品影院一区二区久久久| 在线91免费看| 樱桃国产成人精品视频| jlzzjlzz国产精品久久| 久久综合色综合88| 亚洲成人1区2区| 欧美三级欧美一级| 亚洲成人午夜影院| 欧美一区午夜视频在线观看| 日韩成人av影视| 欧美一个色资源| 美日韩一级片在线观看| 亚洲视频一二三| 亚洲精品视频一区二区| 亚洲一区二区视频在线| 日本免费新一区视频| 美日韩一级片在线观看| 国产乱国产乱300精品| 99re热视频这里只精品| 777xxx欧美| 久久久久99精品一区| 亚洲精品少妇30p| 日本vs亚洲vs韩国一区三区| 国产成人小视频| 欧美影院精品一区| 精品国产一区二区三区久久久蜜月| 久久精品日韩一区二区三区| 亚洲欧美日韩一区二区三区在线观看| 丝袜亚洲另类欧美| 国产精品一区二区在线看| 一本大道久久a久久精品综合| 欧美高清视频www夜色资源网| 久久亚洲一区二区三区四区| 亚洲人123区| 国产一区视频在线看| 欧美性xxxxxxxx| 国产拍揄自揄精品视频麻豆| 亚洲欧美日韩国产一区二区三区| 亚洲成av人影院在线观看网| 国产一区二区电影| 欧美日韩在线三级| 亚洲国产高清aⅴ视频| 丝袜美腿亚洲色图| 成人精品国产福利| 精品日韩一区二区三区免费视频| 亚洲欧美偷拍另类a∨色屁股| 久草精品在线观看| 欧美性猛交xxxxxx富婆| 欧美经典一区二区三区| 视频一区二区三区中文字幕| 99久久免费视频.com| 欧美v亚洲v综合ⅴ国产v| 亚洲国产成人91porn| 99re成人在线| 欧美国产日韩亚洲一区| 免费观看久久久4p| 欧美三级一区二区| 亚洲另类中文字| 成人app在线观看| 国产亚洲人成网站| 激情小说亚洲一区| 欧美一级片在线看| 香蕉影视欧美成人| 欧美性大战久久久| 一级做a爱片久久| 91网站最新网址| 国产精品久久久久毛片软件| 国产中文字幕精品| 日韩欧美三级在线| 男男视频亚洲欧美| 69久久99精品久久久久婷婷| 亚洲一卡二卡三卡四卡五卡| 色94色欧美sute亚洲13| 亚洲视频香蕉人妖| jlzzjlzz亚洲日本少妇| 国产日韩欧美精品一区| 国产suv精品一区二区883| 久久综合九色欧美综合狠狠| 精品一区二区国语对白| 日韩欧美激情一区| 久久国产尿小便嘘嘘尿| 精品99久久久久久|