• <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频|成人a站免费|日本黄色片|久久久久无码AV

    技術(shù)熱線: 4007-888-234
    設(shè)計(jì)開(kāi)發(fā)

    專(zhuān)注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

    開(kāi)發(fā)工具

    提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享

    技術(shù)支持

    從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

    新品推廣

    提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力

    新聞中心

    提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

    PIC單片機(jī)在ICD做lcd顯示時(shí)鐘演示程序

    更新時(shí)間: 2019-03-21
    閱讀量:747

    ;*************************************************
    ;* CLKTEST.ASM *
    ;*-----------------------------------------------*
    ;*-----------------------------------------------*
    ;*************************************************
    ;* ICDDEMO教學(xué)實(shí)驗(yàn)板 lcd顯示時(shí)鐘演示程序 *
    ;*************************************************
    include

    ;*----
    ; 定義 LCD數(shù)據(jù)& 控制I/O口
    LCD_DATA equ PORTB
    LCD_CNTL1 equ PORTB
    LCD_CNTL2 equ PORTA

    ; 定義 LCD控制相應(yīng)的I/O引腳
    RS equ 1
    E equ 5

    ; LCD 模塊命令
    DISP_ON EQU 0x00C ; 開(kāi)顯示
    DISP_ON_C EQU 0x00E ; 開(kāi)顯示, 開(kāi)指針
    DISP_ON_B EQU 0x00F ; 開(kāi)顯示, 開(kāi)指針,開(kāi)閃爍
    DISP_OFF EQU 0x008 ; 關(guān)顯示
    CLR_DISP EQU 0x001 ; 清顯示的操作數(shù)
    ENTRY_INC EQU 0x006 ; 操作數(shù)
    ENTRY_INC_S EQU 0x007 ; 操作數(shù)
    ENTRY_DEC EQU 0x004 ; 操作數(shù)
    ENTRY_DEC_S EQU 0x005 ; 操作數(shù)
    DD_RAM_ADDR EQU 0x080 ; 初始化第一行顯示的操作數(shù)
    DD_RAM_UL EQU 0x0c0 ; 初始化第二行顯示的操作數(shù)

    ; 設(shè)置顯示相關(guān)寄存器
    ;*----

    org 0
    nop
    goto start
    org 4
    goto ISR

    org 10

    CalTable
    bcf STATUS,RP0
    bcf PCLATH,0
    movlw 0x66 ; 進(jìn)行校準(zhǔn)處理
    subwf Temp,w ;
    addwf PCL,f ; 將補(bǔ)償結(jié)果與 PCL相加
    dt 0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5
    dt 6,6,6,7,7,7,8,8,8,9,9,0xa,0xa,0xb,0xb,0xc,0xc
    dt 0xd,0xd,0xe,0xe,0xf,0xf,0xf,0x10,0x10,0x10
    dt 0x11,0x11,0x12,0x12,0x12,0x13,0x13,0x14,0x14,0x14
    dt 0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x17,0x18,0x18
    dt 0x19,0x19,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c
    dt 0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x20,0x20
    dt 0x21,0x21,0x22,0x22,0x23,0x23,0x24,0x24,0x25,0x25
    dt 0x26,0x26,0x27,0x28,0x29,0x29,0x2a,0x2a,0x2b,0x2b
    dt 0x2c,0x2d,0x2e,0x2f,0x30,0x3

    movwf Temp

    call Bin2BCDT ; 進(jìn)行BCD碼調(diào)整
    movlw 08ah ; 從第一行的第0A個(gè)位置開(kāi)始
    call SendCmd
    movf TempH,W ; 顯示溫度
    call putcLCD
    movf TempL,W
    call putcLCD
    movlw 'C' ; 顯示&ldquo;C&rdquo;(表示攝氏度)
    call putcLCD
    movlw 20h
    movwf BKM
    return
    ;************************************************
    ;* Bin2BCDT - 將 Temp 寄存器內(nèi)的二進(jìn)制數(shù)轉(zhuǎn) *
    ;* 換為相應(yīng)的 ASCII 碼并存為 TempH:TempL 的形式 *
    ;************************************************
    Bin2BCDT
    bcf STATUS,RP0
    clrf TempH ; Initialize variables
    movf Temp,W
    movwf TempL
    Ttenth ; Subtract 10 from low variable
    movlw .10 ; until result is < 0. On each
    subwf TempL,W ; subtraction, increment the
    btfss STATUS,C ; temperature high byte.
    goto Over0
    movwf TempL
    incf TempH,F
    goto Ttenth
    Over0
    movlw 0x30 ; Make decimal ASCII by adding
    addwf TempH,F ; '0' to high and low byte
    addwf TempL,F
    return
    ;*************************************************
    ;* DisplayTime - 將顯示指針移至第一行,調(diào)用Bin2BCD*
    ;* 子程序?qū)ecs 和 Mins寄存器內(nèi)的數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的*
    ;* ASCII 碼, 然后送 LCD顯示. *
    ;*************************************************
    DisplayTime
    bcf STATUS,RP0
    call Bin2BCD ; 調(diào)用二進(jìn)制與bcd碼轉(zhuǎn)換子程序
    movf HourH,W ; 顯示小時(shí)高位
    call putcLCD ;
    movf HourL,W ; 顯示小時(shí)低位
    call putcLCD ;
    movlw ':'
    call putcLCD ; 顯示 ':'
    movf MinsH,W ; 顯示分鐘高位
    call putcLCD ;
    movf MinsL,W ; 顯示分鐘低位
    call putcLCD ;
    movlw ':' ; 顯示 ':'
    call putcLCD
    movf SecsH,W ; 顯示秒鐘高位
    call putcLCD ;
    movf SecsL,W ; 顯示秒鐘低位
    call putcLCD ;
    return
    ;************************************************
    ;* Bin2BCD - 將 Secs & Mins 寄存器內(nèi)的二進(jìn)制數(shù)轉(zhuǎn)*
    ;* 換為相應(yīng)的 ASCII 碼并存為 SecsH:SecsL 及 *
    ;* MinsH:MinsL,HourH:HourL的形式. *
    ;************************************************
    Bin2BCD
    bcf STATUS,RP0
    clrf HourH ; 初始化變量
    movf Hour,W ; 轉(zhuǎn)換&ldquo;時(shí)&rdquo;
    movwf HourL
    Hourth ; Loop to subtract 10
    movlw .10 ; from low byte and
    subwf HourL,W ; increment high byte
    btfss STATUS,C ; while low byte is > 0
    goto Next
    movwf HourL
    incf HourH,F
    goto Hourth
    Next
    clrf MinsH ; 初始化變量
    movf Mins,W ; 轉(zhuǎn)換&ldquo;分&rdquo;
    movwf MinsL
    Mtenth ; Loop to subtract 10
    movlw .10 ; from low byte and
    subwf MinsL,W ; increment high byte
    btfss STATUS,C ; while low byte is > 0
    goto Next1
    movwf MinsL
    incf MinsH,F
    goto Mtenth
    Next1
    clrf SecsH ; 初始化變量
    movf Secs,W ; 轉(zhuǎn)換&ldquo;秒&rdquo;
    movwf SecsL
    Stenth ; Loop to subtract 10
    movlw .10 ; from low byte and
    subwf SecsL,W ; increment high byte
    btfss STATUS,C ; while low byte is > 0
    goto Over
    movwf SecsL
    incf SecsH,F
    goto Stenth
    Over
    movlw 0x30 ;
    addwf HourH,F ;
    addwf HourL,F ; Add 0x30 ('0') to all
    addwf MinsH,F ; variables to convert
    addwf MinsL,F ; a number 0 - 9 to an
    addwf SecsH,F ; ASCII equivalent
    addwf SecsL,F ; '0' to '9'
    return
    ;*====
    DispTime
    bcf STATUS,RP0
    movlw 0c7h
    call SendCmd
    call Bin2BCa ; 調(diào)用二進(jìn)制與bcd碼轉(zhuǎn)換子程序
    movf HourH1,W ; 顯示小時(shí)高位
    call putcLCD ;
    movf HourL1,W ; 顯示小時(shí)低位
    call putcLCD ;
    movlw ':' ; 顯示 ':'
    call putcLCD
    movf MinsH1,W ; 顯示分鐘高位
    call putcLCD ;
    movf MinsL1,W ; 顯示分鐘低位
    call putcLCD ;
    return
    ;*----
    Bin2BCa
    bcf STATUS,RP0
    clrf HourH1 ; 初始化變量
    movf Hour1,W ; 轉(zhuǎn)換&ldquo;時(shí)&rdquo;
    movwf HourL1
    Hourth1 ; Loop to subtract 10
    movlw .10 ; from low byte and
    subwf HourL1,W ; increment high byte
    btfss STATUS,C ; while low byte is > 0
    goto Nexta
    movwf HourL1
    incf HourH1,F
    goto Hourth1
    Nexta
    clrf MinsH1 ; 初始化變量
    movf Mins1,W ; 轉(zhuǎn)換&ldquo;分&rdquo;
    movwf MinsL1
    Mtenth1 ; Loop to subtract 10
    movlw .10 ; from low byte and
    subwf MinsL1,W ; increment high byte
    btfss STATUS,C ; while low byte is > 0
    goto Over1
    movwf MinsL1
    incf MinsH1,F
    goto Mtenth1
    Over1
    movlw 0x30 ;
    addwf HourH1,F ;
    addwf HourL1,F ; Add 0x30 ('0') to all
    addwf MinsH1,F ; variables to convert
    addwf MinsL1,F ; a number 0 - 9 to an
    return ; ASCII equivalent
    ;*******************************************************************
    ;* LCD 模塊子程序 *
    ;*******************************************************************
    ;InitLCD&mdash;&mdash;初始化LCD模塊 *
    ;*******************************************************************
    InitLCD
    bcf STATUS,RP0 ; Bank 0
    bcf STATUS,RP1
    clrf LCD_DATA ; 清 LCD 數(shù)據(jù) & 控制位
    bsf STATUS,RP0 ; Bank 1
    movlw 0xc1 ; 設(shè)置RB1~RB5為輸出
    movwf LCD_DATA
    bcf TRISA,5

    bcf STATUS,RP0 ;
    movlw 0x00 ;
    movwf LCD_DATA
    bsf LCD_CNTL2, E
    bcf LCD_CNTL2, E

    movlw 0x08 ;
    movwf LCD_DATA
    bsf LCD_CNTL2, E
    bcf LCD_CNTL2, E
    call LongDelay
    call LongDelay

    movlw b'00101000'
    call SendCmd
    movlw DISP_ON ; 開(kāi)顯示
    call SendCmd
    movlw ENTRY_INC ; 設(shè)置指針移動(dòng)方式
    call SendCmd
    movlw DD_RAM_ADDR ; 設(shè)置起始地址
    call SendCmd

    InitLCDEnd ;
    bcf STATUS,RP0 ;
    movlw CLR_DISP ;
    call SendCmd
    return

    ;*******************************************************************
    ;*putcLCD&mdash;&mdash; 將字符數(shù)據(jù)送入 LCD *
    ;* 本程序?qū)⒆址麛?shù)據(jù)分成了高半字節(jié)和低半字節(jié)分別輸入 *
    ;* 先送入的是高半字節(jié) *
    ;*******************************************************************
    putcLCD
    bcf STATUS,RP0
    movwf Byte ; 存 WREG 到 Byte 寄存器
    swapf Byte,W ; 寫(xiě)入高半字節(jié)
    movwf LCD_DATA1
    rlf LCD_DATA1,1
    rlf LCD_DATA1,1
    movlw 0x3c
    andwf LCD_DATA1,1
    movf LCD_DATA1,w
    movwf LCD_DATA
    bsf LCD_CNTL1, RS ; 設(shè)置為送數(shù)據(jù)模式
    bsf LCD_CNTL2, E ; 發(fā)送數(shù)據(jù)信號(hào)
    bcf LCD_CNTL2, E

    movf Byte,W ; 接著送低半字節(jié)
    movwf LCD_DATA1
    rlf LCD_DATA1,1
    rlf LCD_DATA1,1
    movlw 0x3c
    andwf LCD_DATA1,1
    movf LCD_DATA1,w
    movwf LCD_DATA
    bsf LCD_CNTL1, RS ; 設(shè)置為送數(shù)據(jù)模式
    bsf LCD_CNTL2, E ; 發(fā)送數(shù)據(jù)信號(hào)
    bcf LCD_CNTL2, E
    call Delay
    return

    ;*******************************************************************
    ;* SendCmd - 送命令到 LCD *
    ;* 本程序?qū)⒚顢?shù)據(jù)分成了高半字節(jié)和低半字節(jié)分別輸入 *
    ;* 先送入的是高半字節(jié) *
    ;*******************************************************************
    SendCmd
    bcf STATUS,RP0
    movwf Byte ; 存 WREG 到 Byte 寄存器
    swapf Byte,W ; 送入命令的高字節(jié)
    movwf LCD_DATA1
    rlf LCD_DATA1,1
    rlf LCD_DATA1,1
    movlw 0x3c
    andwf LCD_DATA1,1
    movf LCD_DATA1,w
    movwf LCD_DATA
    bcf LCD_CNTL1,RS ; 設(shè)置為送命令模式
    bsf LCD_CNTL2,E ; 發(fā)送數(shù)據(jù)信號(hào)
    bcf LCD_CNTL2,E
    movf Byte,W ; 接著送命令的低字節(jié)

    movwf LCD_DATA1
    rlf LCD_DATA1,1
    rlf LCD_DATA1,1
    movlw 0x3c
    andwf LCD_DATA1,1
    movf LCD_DATA1,w
    movwf LCD_DATA
    bcf LCD_CNTL1,RS ; 設(shè)置為送命令模式
    bsf LCD_CNTL2,E ; 發(fā)送數(shù)據(jù)信號(hào)
    bcf LCD_CNTL2,E
    call Delay
    return
    ;*******************************************************************
    ;* Delay - 延時(shí)子程序 *
    ;*******************************************************************
    Delay ; call指令占用2個(gè)指令周期
    bcf STATUS,RP0
    clrf Count ; 清 Count占用1個(gè)指令周期
    Dloop
    decfsz Count,f ; 這兩行指令將延時(shí)
    goto Dloop ; (256 * 3) -1 個(gè)指令周期
    return ; return占用2個(gè)指令周期

    ;*******************************************************************
    ;* LongDelay - 長(zhǎng)延時(shí)子程序 *
    ;*******************************************************************
    LongDelay
    bcf STATUS,RP0
    clrf Count
    clrf Count1
    movlw 0x03
    movwf Count2
    LDloop
    decfsz Count,f
    goto LDloop
    decfsz Count1,f
    goto LDloop
    decfsz Count2,f
    goto LDloop
    return
    ;*------
    END


    久久黄色 视频|我草AV|AV在线网站导航|色色97激情|无码人妻一区二区有奶水|日韩精品|大香蕉97视频
  • <tbody id="w8jhq"><dfn id="w8jhq"><pre id="w8jhq"></pre></dfn></tbody>
  • <fieldset id="w8jhq"><pre id="w8jhq"></pre></fieldset>