欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
mplab仿真錯(cuò)誤,編譯成功但是沒有生成任何子文件 .o .hex .c
[打印本頁]
作者:
yuri141
時(shí)間:
2020-12-28 09:45
標(biāo)題:
mplab仿真錯(cuò)誤,編譯成功但是沒有生成任何子文件 .o .hex .c
剛剛在編譯時(shí),提示編譯成功了,但是沒有生成任何子文件,像 .o .hex .c 都沒有,我也是剛學(xué)這個(gè)單片機(jī)編程,好多不太理解,還望各位大佬幫忙指出一下,謝謝!!!!!
51hei截圖20201228094317.png
(244.94 KB, 下載次數(shù): 48)
下載附件
2020-12-28 09:43 上傳
list p=16f887
#include <p16f887.inc> ; processor specific variable definitions
w_temp EQU 0x71 ; variable used for context saving
status_temp EQU 0x72 ; variable used for context saving
BIAN EQU 0X40 ;鍵盤顯示中間變量
KEYFLAG EQU 0X43
NUM EQU 0X44
NUM4 EQU 0X48
NUMB EQU 0X49 ;計(jì)數(shù)變量
GE EQU 0X50
SHI EQU 0X51
BAI EQU 0X52
SHANG EQU 0X53
YUSHU EQU 0X54
COUNTER EQU 0X55
NUM5 EQU 0X56
NUM6 EQU 0X57
NUM7 EQU 0X58
NUM8 EQU 0X59
NUM9 EQU 0X60
NUM10 EQU 0X61
NUM11 EQU 0X62
;**********************************************************************
ORG 0x000 ; processor reset vector
clrf PCLATH ; ensure page bits are cleared
goto MAIN ; go to beginning of program
ORG 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
BCF INTCON,T0IF ;清 TMR0 溢出標(biāo)志位
DECFSZ COUNTER ;循環(huán)減 1,是否為 0
GOTO RT ;否,中斷返回
DECF NUMB ;是,計(jì)數(shù)變量減 1
MOVLW .20 ;循環(huán)數(shù)賦初值 20
MOVWF COUNTER
RT MOVLW 3DH ;50 毫秒時(shí)間常數(shù)初值
MOVWF TMR0
; isr code can go here or be located as a call subroutine elsewhere
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
MAIN ;主程序
; remaining code goes here
BSF STATUS,RP1 ;16F887 初始化
BSF STATUS,RP0
CLRF ANSEL
CLRF ANSELH
BCF STATUS,RP1
BCF STATUS,RP0
CLRF BIAN ;變量的初始化
CLRF NUM4
CLRF NUM
CLRF NUM8
CLRF NUM9
CLRF NUM10
MOVLW 01H ;KEYFLAG 初始化,為 1
MOVWF KEYFLAG
BSF STATUS,RP0 ;進(jìn)入體 1
CLRF TRISD ;RD 設(shè)為輸出
MOVLW 07H ;分頻比為 1:256
MOVWF OPTION_REG
MOVLW 0C1H ;RB 的位 1,2,3,4,5 設(shè)為輸出
MOVWF TRISB
MOVLW 0F0H ;RD 低四位輸入,高四位輸出
MOVWF TRISC
MOVLW 08H ;RE 位 1,2,3 輸出
MOVWF TRISE
BCF STATUS,RP0 ;進(jìn)入體 0
MOVLW B'10100000' ;打開總中斷和 T0 中斷使能位
MOVWF INTCON
MOVLW .20 ;送入中斷循環(huán)次數(shù)初值為 20
MOVWF COUNTER
MOVLW 0FFH ;RB,RD 關(guān)閉
MOVWF PORTD
MOVWF PORTB
MOVLW 07H ;RE 關(guān)閉
MOVWF PORTE
CLRF NUM5 ;清空變量
CLRF NUM6
CLRF NUM7
GOTO LOOP ;跳至大循環(huán)
;動(dòng)態(tài)計(jì)數(shù)顯示子程序,用于倒計(jì)時(shí)數(shù)的顯示
LOOP6 CALL CALC ;調(diào)用分解子程序
CALL DISPLAY ;調(diào)用顯示子程序
CALL JIANPAN ;調(diào)用鍵盤掃描子程序
MOVLW 00H ;計(jì)數(shù)變量是否為 0
SUBWF NUMB,W
BTFSC STATUS,Z
CALL LIGHT ;是,調(diào)用為 0 提示及恢復(fù)子程序
GOTO LOOP6 ;否,返回循環(huán)
;提示子程序,用于計(jì)時(shí)為 0 時(shí)的提示和程序的重初始化
LIGHT BCF INTCON,5 ;關(guān)閉 T0 使能,計(jì)時(shí)器停止工作
CALL SHANSHU ;調(diào)用小燈閃爍子程序
MOVLW 01H ;KEYFLAG 初始化
MOVWF KEYFLAG
CLRF NUM9 ;中間變量的初始化
CLRF NUM10
GOTO LOOP ;跳轉(zhuǎn)至 LOOP 大循環(huán),重新開始工作
;分解子程序,多位數(shù)的分解
CALC MOVF NUMB,W ;顯示變量送入 W 寄存器
CALL DIV10 ;調(diào)用除十子程序
MOVWF GE ;將返回?cái)?shù)送入 GE,用于個(gè)位顯示
MOVF SHANG,W ;變量 SHANG 送如 W 寄存器
CALL DIV10 ;調(diào)用除十子程序
MOVWF SHI ;返回?cái)?shù)送入 SHI,用于十位的顯示
MOVF SHANG,W ;SHANG 送入 BAI,用于百位的顯示
MOVWF BAI
RETURN
;顯示子程序
DISPLAY MOVF GE,W ;個(gè)位數(shù)送入 W 寄存器
CALL CHABIAO ;查表子程序
MOVWF PORTD ;碼值送入段選
BCF PORTB,1 ;個(gè)位位選打開
CALL DELAY ;延時(shí)
BSF PORTB,1 ;位選關(guān)閉
MOVF SHI,W
CALL CHABIAO ;十位數(shù)查表
MOVWF PORTD ;送入段選
BCF PORTB,2 ;十位位選打開
CALL DELAY ;延時(shí)
BSF PORTB,2 ;位選關(guān)閉
MOVF BAI,W
CALL CHABIAO ;百位數(shù)查表
MOVWF PORTD ;送入段選
BCF PORTB,3 ;百位位選打開
CALL DELAY ;延時(shí)
BSF PORTB,3 ;位選關(guān)閉
RETURN
;除十子程序
DIV10 MOVWF YUSHU ;將值送入 YUSHU
CLRF SHANG ;清空 SHANG
MOVLW .10
DIVLOOP SUBWF YUSHU,F ;YUSHU 減 10
INCF SHANG,F ;SHANG 加 1
BTFSC STATUS,C ;是否借位
GOTO DIVLOOP ;無,返回繼續(xù)判斷
DECF SHANG,F ;是,SHANG 減 1
ADDWF YUSHU,W ;YUSHU 加 10 放入 W 返回
RETURN
;鍵盤掃描及顯示大循環(huán),用于鍵入數(shù)的顯示
LOOP CALL JIANPAN ;調(diào)用鍵盤掃描子程序
BTFSC KEYFLAG,1 ;是否第一次鍵
CALL XIANSHI1 ;是,調(diào)用顯示 1 子程序
BTFSC KEYFLAG,2 ;是否第二次鍵入
CALL XIANSHI2 ;是,調(diào)用顯示 2 子程序
BTFSC KEYFLAG,3 ;是否第三次鍵入
CALL XIANSHI3 ;是,調(diào)用顯示 3 子程序
BTFSC KEYFLAG,4 ;是否第四次按下
CALL FLAGINI ;是,調(diào)用鍵入次數(shù)循環(huán)子程序
GOTO LOOP ;返回大循環(huán)
;鍵入次數(shù)循環(huán)子程序
FLAGINI MOVLW 02H ;KEYFLAG 恢復(fù)初始值
MOVWF KEYFLAG
RETURN
;查表子程序
CHABIAO ADDWF PCL,F
RETLW0XC0
RETLW0XF9
RETLW0XA4
RETLW0XB0
RETLW0X99
RETLW0X92
RETLW0X82
RETLW0XF8
RETLW0X80
RETLW0X90
;鍵盤顯示 1 子程序
XIANSHI1 BCF PORTB,1 ;位選打開
MOVF BIAN,W ;送入鍵入數(shù)段選
MOVWF PORTD
MOVWF NUM ;段選復(fù)制到 NUM 里,為后來使用
BSF PORTB,1 ;關(guān)閉位選
MOVF NUM8,W ;將加入數(shù)送入 NUM5
MOVWF NUM5
MOVWF NUMB ;同時(shí)送入顯示變量
MOVWF NUM11 ;為顯示 3 子程序所用
RETURN
;鍵盤顯示 2 子程序,用于 2 位數(shù)的鍵入顯示
XIANSHI2 BCF PORTB,1 ;個(gè)位位選打開
MOVF BIAN,W ;送入段選
MOVWF PORTD
MOVWF NUM4 ;同時(shí)復(fù)制到 NUM4,為 3 位顯示所用
CALL DELAY ;延時(shí)
BSF PORTB,1 ;個(gè)位位選關(guān)閉
BCF PORTB,2 ;十位位選打開
MOVF NUM,W ;送入段選
MOVWF PORTD
CALL DELAY ;延時(shí)
BSF PORTB,2 ;位選關(guān)閉
;2 個(gè)數(shù)組合成十進(jìn)制兩位數(shù)
MOVF NUM8,W ;將 NUM8 放入 NUM6,為送數(shù)所用
MOVWF NUM6
MOVLW 00H ;十位是否為 0
SUBWF NUM5,F
BTFSS STATUS,Z
CALL JIASHI1 ;否,調(diào)用加十 1 子程序
MOVF NUM9,W ;將 NUM9 與 NUM6 相加
ADDWF NUM6,W
MOVWF NUMB ;放入顯示變量里
RETURN
;加十 1 子程序
JIASHI1 MOVLW .10 ;NUM9 加十
ADDWF NUM9,F
DECF NUM5,F ;NUM5 減 1
BTFSS STATUS,Z ;判斷是否為 0
GOTO JIASHI1 ;否,繼續(xù)加十
RETURN ;是,返回
;鍵盤顯示 3 子程序,用于鍵入 3 位數(shù)的顯示
XIANSHI3 BCF PORTB,1 ;個(gè)位位選打開
MOVF BIAN,W ;送入個(gè)位段選
MOVWF PORTD
CALL DELAY ;調(diào)用短時(shí)間延時(shí)子程序
BSF PORTB,1 ;關(guān)閉個(gè)位位選
BCF PORTB,2 ;打開十位位選
MOVF NUM4,W ;送入十位段選
MOVWF PORTD
CALL DELAY ;延時(shí)
BSF PORTB,2 ;關(guān)閉位選
BCF PORTB,3 ;打開百位位選
MOVF NUM,W ;送入百位段選
MOVWF PORTD
CALL DELAY ;延時(shí)
BSF PORTB,3 ;關(guān)閉位選
;進(jìn)行三個(gè)數(shù)到十進(jìn)制三位數(shù)的轉(zhuǎn)換
MOVF NUM8,W ;將 NUM8 復(fù)制到 MUM7
MOVWF NUM7
MOVLW 00H ;判斷百位數(shù)是否為 0
SUBWF NUM11,F
BTFSS STATUS,Z
CALL JIABAI ;不為 0,調(diào)用加百子程序
MOVLW 00H ;為 0,繼續(xù)判斷十位數(shù)是否為 0
SUBWF NUM6,F
BTFSS STATUS,Z
CALL JIASHI2 ;不為 0,調(diào)用加十 2 子程序
MOVF NUM10,W ;將個(gè)位數(shù)與 NUM10 相加
ADDWF NUM7,W
MOVWF NUMB ;組成的數(shù)放入顯示變量 NUMB
RETURN
;加百子程序
JIABAI MOVLW .100 ;NUM10 加 100
ADDWF NUM10,F
DECF NUM11,F ;NUM11 減 1
BTFSS STATUS,Z ;判斷是否為 0
GOTO JIABAI ;不為 0,返回加百
RETURN ;為 0,返回
;加十 2 子程序
JIASHI2 MOVLW .10 ;NUM10 加 10
ADDWF NUM10,F
DECF NUM6,F ;NUM6 減 1
BTFSS STATUS,Z ;是否為 0
GOTO JIASHI2 ;否,繼續(xù)加十
RETURN ;是,返回
;鍵盤子程序,用于判斷是否鍵入和鍵入何鍵,并實(shí)現(xiàn)相應(yīng)功能
JIANPAN MOVLW 00H ;RC 口低四位輸出低電平
MOVWF PORTC
MOVLW 0F0H
ANDWF PORTC,W ;屏蔽低四位
SUBLW 0F0H
BTFSC STATUS,Z ;判斷高四位是否為全 1
RETURN ;是,無鍵輸入,返回繼續(xù)判斷
CALL DELAY10MS ;否,有可能有鍵輸入,延時(shí) 20 毫秒
CALL DELAY10MS
MOVLW 0F0H ;再判斷一次是否鍵入
ANDWF PORTC,W
SUBLW 0F0H
BTFSC STATUS,Z
RETURN ;虛假輸入,返回
BCF PORTB,5 ;確實(shí)有鍵輸入,蜂鳴器鳴叫
MOVLW 0FEH ;逐行判斷哪個(gè)鍵輸入,首先 RC0=0
MOVWF PORTC
BTFSS PORTC,4 ;判斷鍵 0
GOTO JIAN0 ;是,跳至鍵 0 功能子程序
BTFSS PORTC,5 ;判斷鍵 1
GOTO JIAN1 ;是,跳至鍵 1 功能子程序
BTFSS PORTC,6 ;判斷鍵 2
GOTO JIAN2 ;是,跳至鍵 2 功能子程序
BTFSS PORTC,7 ;判斷鍵 3
GOTO JIAN3 ;是,跳至鍵 3 功能子程序
MOVLW 0FDH ;RC1=0
MOVWF PORTC
BTFSS PORTC,4 ;判斷鍵 4
GOTO JIAN4 ;是,跳至鍵 4 功能子程序
BTFSS PORTC,5 ;判斷鍵 5
GOTO JIAN5 ;是,跳至鍵 5 功能子程序
BTFSS PORTC,6 ;判斷鍵 6
GOTO JIAN6 ;是,跳至鍵 6 功能子程序
BTFSS PORTC,7 ;判斷鍵 7
GOTO JIAN7 ;是,跳至鍵 7 功能子程序
MOVLW 0FBH ;RC2=0
MOVWF PORTC
BTFSS PORTC,4 ;判斷鍵 8
GOTO JIAN8 ;是,跳至鍵 8 功能子程序
BTFSS PORTC,5 ;判斷鍵 9
GOTO JIAN9 ;是,跳至鍵 9 功能子程序
BTFSS PORTC,6 ;判斷鍵 A
GOTO JIANA ;是,跳至鍵 A 功能子程序
BTFSS PORTC,7 ;判斷鍵 B
GOTO JIANB ;是,跳至鍵 B 功能子程序
MOVLW 0F7H ;RC3=0
MOVWF PORTC
BTFSS PORTC,4 ;判斷鍵 C
GOTO JIANC ;是,跳至鍵 C 功能子程序
BTFSS PORTC,5 ;判斷鍵 D
GOTO JIAND ;是,跳至鍵 D 功能子程序
BTFSS PORTC,6 ;判斷鍵 E
GOTO JIANE ;是,跳至鍵 E 功能子程序
BTFSS PORTC,7 ;判斷鍵 F
GOTO JIANF ;是,跳至鍵 F 功能子程序
RETURN
;0 到 9 按鍵,用于鍵入數(shù)字
JIAN0 CALL SFANG ;釋放
MOVLW 00H ;將 0 放入 W 寄存器
MOVWF NUM8 ;NUM8 帶 0 返回
CALL CHABIAO ;調(diào)用查表子程序
MOVWF BIAN ;BIAN 帶 0 顯示碼返回
RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
RETURN
JIAN1 CALL SFANG ;釋放
MOVLW 01H ;將 1 放入 W 寄存器
MOVWF NUM8 ;NUM8 帶 1 返回
CALL CHABIAO ;調(diào)用查表子程序
MOVWF BIAN ;BIAN 帶 1 顯示碼返回
RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
RETURN
JIAN2 CALL SFANG ;釋放
MOVLW 02H ;將 2 放入 W 寄存器
MOVWF NUM8 ;NUM8 帶 2 返回
CALL CHABIAO ;調(diào)用查表子程序
MOVWF BIAN ;BIAN 帶 2 顯示碼返回
RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
RETURN
JIAN3 CALL SFANG ;釋放
MOVLW 03H ;將 3 放入 W 寄存器
MOVWF NUM8 ;NUM8 帶 3 返回
CALL CHABIAO ;調(diào)用查表子程序
MOVWF BIAN ;BIAN 帶 3 顯示碼返回
RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
RETURN
JIAN4 CALL SFANG ;釋放
MOVLW 04H ;將 4 放入 W 寄存器
MOVWF NUM8 ;NUM8 帶 4 返回
CALL CHABIAO ;調(diào)用查表子程序
MOVWF BIAN ;BIAN 帶 4 顯示碼返回
RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
RETURN
JIAN5 CALL SFANG ;釋放
MOVLW 05H ;將 5 放入 W 寄存器
MOVWF NUM8 ;NUM8 帶 5 返回
CALL CHABIAO ;調(diào)用查表子程序
MOVWF BIAN ;BIAN 帶 5 顯示碼返回
RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
RETURN
JIAN6 CALL SFANG ;釋放
MOVLW 06H ;將 6 放入 W 寄存器
MOVWF NUM8 ;NUM8 帶 6 返回
CALL CHABIAO ;調(diào)用查表子程序
MOVWF BIAN ;BIAN 帶 6 顯示碼返回
RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
RETURN
JIAN7 CALL SFANG ;釋放
MOVLW 07H ;將 7 放入 W 寄存器
MOVWF NUM8 ;NUM8 帶 7 返回
CALL CHABIAO ;調(diào)用查表子程序
MOVWF BIAN ;BIAN 帶 7 顯示碼返回
RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
RETURN
JIAN8 CALL SFANG ;釋放
MOVLW 08H ;將 8 放入 W 寄存器
MOVWF NUM8 ;NUM8 帶 8 返回
CALL CHABIAO ;調(diào)用查表子程序
MOVWF BIAN ;BIAN 帶 8 顯示碼返回
RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
RETURN
JIAN9 CALL SFANG ;釋放
MOVLW 09H ;NUM8 帶 9 返回
MOVWF NUM8 ;將 9 放入 W 寄存器
CALL CHABIAO ;調(diào)用查表子程序
MOVWF BIAN ;BIAN 帶 9 顯示碼返回
RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
RETURN
;A 鍵,用于倒計(jì)時(shí)的開始
JIANA CALL SFANG ;釋放
BSF INTCON,5 ;T0 使能打開,為定時(shí)器開啟做準(zhǔn)備
MOVLW 3DH ;為定時(shí)器送初值,定時(shí)開始
MOVWF TMR0
GOTO LOOP6 ;進(jìn)入倒計(jì)時(shí)顯示大循環(huán)
RETURN
;B 鍵,用于計(jì)數(shù)暫停
JIANB CALL SFANG ;釋放
BCF INTCON,5 ;T0 使能關(guān)閉,計(jì)數(shù)停止
RETURN
;C 鍵,用于計(jì)數(shù)繼續(xù)
JIANC CALL SFANG ;釋放
BSF INTCON,5 ;T0 使能打開,計(jì)數(shù)繼續(xù)
RETURN
;D 鍵,用于計(jì)數(shù)加一
JIAND CALL SFANG ;釋放
INCF NUMB ;顯示變量加一
RETURN
;E 鍵,用于計(jì)數(shù)減一
JIANE CALL SFANG ;釋放
DECF NUMB ;顯示變量減一
RETURN
;F 鍵,用于清零和重新開始
JIANF CALL SFANG ;調(diào)用釋放子程序
BCF INTCON,5 ;T0 使能關(guān)閉,停止計(jì)時(shí)
MOVLW 01H ;鍵盤次數(shù)判斷恢復(fù)初始值
MOVWF KEYFLAG
CLRF NUM9 ;中間變量的初始化
CLRF NUM10
GOTO LOOP ;跳轉(zhuǎn)至 LOOP 大循環(huán)
;釋放子程序
SFANG MOVLW 00H ;RC 口低四位輸出賦低電平
MOVWF PORTC
MOVLW 0F0H ;屏蔽低四位
ANDWF PORTC,W
SUBLW 0F0H
BTFSS STATUS,Z ;判斷高四位是否有低電平
GOTO SFANG ;有低電平,未釋放,返回繼續(xù)判斷
CALL DELAY10MS ;無低電平,延時(shí) 10 毫秒
MOVLW 0F0H ;再次確認(rèn)
ANDWF PORTC,W
SUBLW 0F0H
BTFSS STATUS,Z ;再次判斷
GOTO SFANG ;虛假釋放,返回繼續(xù)判斷
BSF PORTB,5 ;已釋放,蜂鳴器停止鳴叫
RETURN ;返回
;10 毫秒延時(shí)子程序
DELAY10MS
MOVLW 0DH
MOVWF 23H
LOOP4 MOVLW 0FFH
MOVWF 24H
LOOP5 DECFSZ 24H
GOTO LOOP5
DECFSZ 23H
GOTO LOOP4
RETURN
;短時(shí)間延時(shí)子程序
DELAY DECFSZ 0X30,F
GOTO DELAY
RETURN
;小燈閃爍子程序,3 種顏色的小燈每隔 1 秒交替亮滅 1 秒
SHANSHU BCF PORTE,0 ;燈 0 亮
BCF PORTB,5 ;蜂鳴器開
CALL DELAY1S
MOVLW 0FFH ;燈 0 滅
BSF PORTB,5 ;蜂鳴器關(guān)
MOVWF PORTE
CALL DELAY1S
BCF PORTE,1 ;燈 1 亮
BCF PORTB,5 ;蜂鳴器開
CALL DELAY1S
MOVLW 0FFH ;燈 1 滅
BSF PORTB,5 ;蜂鳴器關(guān)
MOVWF PORTE
CALL DELAY1S
BCF PORTE,2 ;燈 2 亮
BCF PORTB,5 ;蜂鳴器開
CALL DELAY1S
MOVLW 0FFH ;燈 2 滅
BSF PORTB,5 ;蜂鳴器關(guān)
MOVWF PORTE
CALL DELAY1S
RETURN
;1 秒延時(shí)子程序
DELAY1S MOVLW 06H
MOVWF 20H
LOOP1 MOVLW 0EBH
MOVWF 21H
LOOP2 MOVLW 0ECH
MOVWF 22H
LOOP3 DECFSZ 22H
GOTO LOOP3
DECFSZ 21H
GOTO LOOP2
DECFSZ 20H
GOTO LOOP1
RETURN
END
復(fù)制代碼
作者:
zzzggghhh
時(shí)間:
2020-12-28 13:07
子文件需要你自己保存呢,百度一下,很簡單的
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1