久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2000|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

mplab仿真錯(cuò)誤,編譯成功但是沒有生成任何子文件 .o .hex .c

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:833718 發(fā)表于 2020-12-28 09:45 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
剛剛在編譯時(shí),提示編譯成功了,但是沒有生成任何子文件,像   .o    .hex  .c    都沒有,我也是剛學(xué)這個(gè)單片機(jī)編程,好多不太理解,還望各位大佬幫忙指出一下,謝謝!!!!!



  1. list p=16f887
  2. #include <p16f887.inc> ; processor specific variable definitions
  3. w_temp EQU 0x71 ; variable used for context saving
  4. status_temp EQU 0x72 ; variable used for context saving
  5. BIAN EQU 0X40 ;鍵盤顯示中間變量
  6. KEYFLAG EQU 0X43
  7. NUM EQU 0X44
  8. NUM4 EQU 0X48
  9. NUMB EQU 0X49 ;計(jì)數(shù)變量
  10. GE EQU 0X50
  11. SHI EQU 0X51
  12. BAI EQU 0X52
  13. SHANG        EQU 0X53
  14. YUSHU        EQU 0X54
  15. COUNTER EQU 0X55
  16. NUM5 EQU 0X56
  17. NUM6 EQU 0X57
  18. NUM7 EQU 0X58
  19. NUM8 EQU 0X59
  20. NUM9 EQU 0X60
  21. NUM10 EQU 0X61
  22. NUM11 EQU 0X62
  23. ;**********************************************************************
  24. ORG 0x000 ; processor reset vector
  25. clrf PCLATH ; ensure page bits are cleared
  26. goto MAIN ; go to beginning of program
  27. ORG 0x004 ; interrupt vector location
  28. movwf w_temp ; save off current W register contents
  29. movf STATUS,w ; move status register into W register
  30. movwf status_temp ; save off contents of STATUS register
  31. BCF INTCON,T0IF ;清 TMR0 溢出標(biāo)志位
  32. DECFSZ COUNTER ;循環(huán)減 1,是否為 0
  33. GOTO RT ;否,中斷返回
  34. DECF NUMB ;是,計(jì)數(shù)變量減 1
  35. MOVLW .20 ;循環(huán)數(shù)賦初值 20
  36. MOVWF COUNTER
  37. RT MOVLW 3DH ;50 毫秒時(shí)間常數(shù)初值
  38. MOVWF TMR0
  39. ; isr code can go here or be located as a call subroutine elsewhere
  40. movf status_temp,w ; retrieve copy of STATUS register
  41. movwf STATUS ; restore pre-isr STATUS register contents
  42. swapf w_temp,f
  43. swapf w_temp,w ; restore pre-isr W register contents
  44. retfie ; return from interrupt
  45. MAIN ;主程序
  46. ; remaining code goes here
  47. BSF STATUS,RP1 ;16F887 初始化
  48. BSF STATUS,RP0
  49. CLRF ANSEL
  50. CLRF ANSELH
  51. BCF STATUS,RP1
  52. BCF STATUS,RP0
  53. CLRF BIAN ;變量的初始化
  54. CLRF NUM4
  55. CLRF NUM
  56. CLRF NUM8
  57. CLRF NUM9
  58. CLRF NUM10
  59. MOVLW 01H ;KEYFLAG 初始化,為 1
  60. MOVWF KEYFLAG
  61. BSF STATUS,RP0 ;進(jìn)入體 1
  62. CLRF TRISD ;RD 設(shè)為輸出
  63. MOVLW 07H ;分頻比為 1:256
  64. MOVWF OPTION_REG
  65. MOVLW 0C1H ;RB 的位 1,2,3,4,5 設(shè)為輸出
  66. MOVWF TRISB
  67. MOVLW 0F0H ;RD 低四位輸入,高四位輸出
  68. MOVWF TRISC
  69. MOVLW 08H ;RE 位 1,2,3 輸出
  70. MOVWF TRISE
  71. BCF STATUS,RP0 ;進(jìn)入體 0
  72. MOVLW B'10100000' ;打開總中斷和 T0 中斷使能位
  73. MOVWF INTCON
  74. MOVLW .20 ;送入中斷循環(huán)次數(shù)初值為 20
  75. MOVWF COUNTER
  76. MOVLW 0FFH ;RB,RD 關(guān)閉
  77. MOVWF PORTD
  78. MOVWF PORTB
  79. MOVLW 07H ;RE 關(guān)閉
  80. MOVWF PORTE
  81. CLRF NUM5 ;清空變量
  82. CLRF NUM6
  83. CLRF NUM7
  84. GOTO LOOP ;跳至大循環(huán)
  85. ;動(dòng)態(tài)計(jì)數(shù)顯示子程序,用于倒計(jì)時(shí)數(shù)的顯示
  86. LOOP6 CALL CALC ;調(diào)用分解子程序
  87. CALL DISPLAY ;調(diào)用顯示子程序
  88. CALL JIANPAN ;調(diào)用鍵盤掃描子程序
  89. MOVLW 00H ;計(jì)數(shù)變量是否為 0
  90. SUBWF        NUMB,W
  91. BTFSC STATUS,Z
  92. CALL LIGHT ;是,調(diào)用為 0 提示及恢復(fù)子程序
  93. GOTO LOOP6 ;否,返回循環(huán)
  94. ;提示子程序,用于計(jì)時(shí)為 0 時(shí)的提示和程序的重初始化
  95. LIGHT BCF INTCON,5 ;關(guān)閉 T0 使能,計(jì)時(shí)器停止工作
  96. CALL SHANSHU ;調(diào)用小燈閃爍子程序
  97. MOVLW 01H ;KEYFLAG 初始化
  98. MOVWF KEYFLAG
  99. CLRF NUM9 ;中間變量的初始化
  100. CLRF NUM10
  101. GOTO LOOP ;跳轉(zhuǎn)至 LOOP 大循環(huán),重新開始工作
  102. ;分解子程序,多位數(shù)的分解
  103. CALC MOVF NUMB,W ;顯示變量送入 W 寄存器
  104. CALL DIV10 ;調(diào)用除十子程序
  105. MOVWF GE ;將返回?cái)?shù)送入 GE,用于個(gè)位顯示
  106. MOVF SHANG,W ;變量 SHANG 送如 W 寄存器
  107. CALL DIV10 ;調(diào)用除十子程序
  108. MOVWF SHI ;返回?cái)?shù)送入 SHI,用于十位的顯示
  109. MOVF SHANG,W ;SHANG 送入 BAI,用于百位的顯示
  110. MOVWF BAI
  111. RETURN
  112. ;顯示子程序
  113. DISPLAY MOVF GE,W ;個(gè)位數(shù)送入 W 寄存器
  114. CALL CHABIAO ;查表子程序
  115. MOVWF PORTD ;碼值送入段選
  116. BCF PORTB,1 ;個(gè)位位選打開
  117. CALL DELAY ;延時(shí)
  118. BSF PORTB,1 ;位選關(guān)閉
  119. MOVF SHI,W
  120. CALL CHABIAO ;十位數(shù)查表
  121. MOVWF PORTD ;送入段選
  122. BCF PORTB,2 ;十位位選打開
  123. CALL DELAY ;延時(shí)
  124. BSF PORTB,2 ;位選關(guān)閉
  125. MOVF BAI,W
  126. CALL CHABIAO ;百位數(shù)查表
  127. MOVWF PORTD ;送入段選
  128. BCF PORTB,3 ;百位位選打開
  129. CALL DELAY ;延時(shí)
  130. BSF PORTB,3 ;位選關(guān)閉
  131. RETURN
  132. ;除十子程序
  133. DIV10 MOVWF YUSHU ;將值送入 YUSHU
  134.         CLRF SHANG ;清空 SHANG
  135.         MOVLW .10
  136. DIVLOOP SUBWF        YUSHU,F ;YUSHU 減 10
  137.         INCF SHANG,F ;SHANG 加 1
  138.         BTFSC STATUS,C ;是否借位
  139.         GOTO DIVLOOP ;無,返回繼續(xù)判斷
  140.         DECF SHANG,F ;是,SHANG 減 1
  141.         ADDWF YUSHU,W ;YUSHU 加 10 放入 W 返回
  142.         RETURN
  143. ;鍵盤掃描及顯示大循環(huán),用于鍵入數(shù)的顯示
  144. LOOP CALL JIANPAN ;調(diào)用鍵盤掃描子程序
  145. BTFSC KEYFLAG,1 ;是否第一次鍵
  146. CALL XIANSHI1 ;是,調(diào)用顯示 1 子程序
  147. BTFSC KEYFLAG,2 ;是否第二次鍵入
  148. CALL XIANSHI2 ;是,調(diào)用顯示 2 子程序
  149. BTFSC KEYFLAG,3 ;是否第三次鍵入
  150. CALL XIANSHI3 ;是,調(diào)用顯示 3 子程序
  151. BTFSC KEYFLAG,4 ;是否第四次按下
  152. CALL FLAGINI ;是,調(diào)用鍵入次數(shù)循環(huán)子程序
  153. GOTO LOOP ;返回大循環(huán)
  154. ;鍵入次數(shù)循環(huán)子程序
  155. FLAGINI MOVLW 02H ;KEYFLAG 恢復(fù)初始值
  156. MOVWF KEYFLAG
  157. RETURN
  158. ;查表子程序
  159. CHABIAO ADDWF PCL,F
  160. RETLW0XC0
  161. RETLW0XF9
  162. RETLW0XA4
  163. RETLW0XB0
  164. RETLW0X99
  165. RETLW0X92
  166. RETLW0X82
  167. RETLW0XF8
  168. RETLW0X80
  169. RETLW0X90
  170. ;鍵盤顯示 1 子程序
  171. XIANSHI1 BCF PORTB,1 ;位選打開
  172. MOVF BIAN,W ;送入鍵入數(shù)段選
  173. MOVWF PORTD
  174. MOVWF NUM ;段選復(fù)制到 NUM 里,為后來使用
  175. BSF PORTB,1 ;關(guān)閉位選
  176. MOVF NUM8,W ;將加入數(shù)送入 NUM5
  177. MOVWF NUM5
  178. MOVWF NUMB ;同時(shí)送入顯示變量
  179. MOVWF NUM11 ;為顯示 3 子程序所用
  180. RETURN
  181. ;鍵盤顯示 2 子程序,用于 2 位數(shù)的鍵入顯示
  182. XIANSHI2 BCF PORTB,1 ;個(gè)位位選打開
  183. MOVF BIAN,W ;送入段選
  184. MOVWF PORTD
  185. MOVWF NUM4 ;同時(shí)復(fù)制到 NUM4,為 3 位顯示所用
  186. CALL DELAY ;延時(shí)
  187. BSF PORTB,1 ;個(gè)位位選關(guān)閉
  188. BCF PORTB,2 ;十位位選打開
  189. MOVF NUM,W ;送入段選
  190. MOVWF PORTD
  191. CALL DELAY ;延時(shí)
  192. BSF PORTB,2 ;位選關(guān)閉
  193. ;2 個(gè)數(shù)組合成十進(jìn)制兩位數(shù)
  194. MOVF NUM8,W ;將 NUM8 放入 NUM6,為送數(shù)所用
  195. MOVWF NUM6
  196. MOVLW 00H ;十位是否為 0
  197. SUBWF        NUM5,F
  198. BTFSS STATUS,Z
  199. CALL JIASHI1 ;否,調(diào)用加十 1 子程序
  200. MOVF NUM9,W ;將 NUM9 與 NUM6 相加
  201. ADDWF NUM6,W
  202. MOVWF NUMB ;放入顯示變量里
  203. RETURN
  204. ;加十 1 子程序
  205. JIASHI1 MOVLW .10 ;NUM9 加十
  206. ADDWF NUM9,F
  207. DECF NUM5,F ;NUM5 減 1
  208. BTFSS STATUS,Z ;判斷是否為 0
  209. GOTO JIASHI1 ;否,繼續(xù)加十
  210. RETURN ;是,返回
  211. ;鍵盤顯示 3 子程序,用于鍵入 3 位數(shù)的顯示
  212. XIANSHI3 BCF PORTB,1 ;個(gè)位位選打開
  213. MOVF BIAN,W ;送入個(gè)位段選
  214. MOVWF PORTD
  215. CALL DELAY ;調(diào)用短時(shí)間延時(shí)子程序
  216. BSF PORTB,1 ;關(guān)閉個(gè)位位選
  217. BCF PORTB,2 ;打開十位位選
  218. MOVF NUM4,W ;送入十位段選
  219. MOVWF PORTD
  220. CALL DELAY ;延時(shí)
  221. BSF PORTB,2 ;關(guān)閉位選
  222. BCF PORTB,3 ;打開百位位選
  223. MOVF NUM,W ;送入百位段選
  224. MOVWF PORTD
  225. CALL DELAY ;延時(shí)
  226. BSF PORTB,3 ;關(guān)閉位選
  227. ;進(jìn)行三個(gè)數(shù)到十進(jìn)制三位數(shù)的轉(zhuǎn)換
  228. MOVF NUM8,W ;將 NUM8 復(fù)制到 MUM7
  229. MOVWF NUM7
  230. MOVLW 00H ;判斷百位數(shù)是否為 0
  231. SUBWF        NUM11,F
  232. BTFSS STATUS,Z
  233. CALL JIABAI ;不為 0,調(diào)用加百子程序
  234. MOVLW 00H ;為 0,繼續(xù)判斷十位數(shù)是否為 0
  235. SUBWF        NUM6,F
  236. BTFSS STATUS,Z
  237. CALL JIASHI2 ;不為 0,調(diào)用加十 2 子程序
  238. MOVF NUM10,W ;將個(gè)位數(shù)與 NUM10 相加
  239. ADDWF NUM7,W
  240. MOVWF NUMB ;組成的數(shù)放入顯示變量 NUMB
  241. RETURN
  242. ;加百子程序
  243. JIABAI MOVLW .100 ;NUM10 加 100
  244. ADDWF NUM10,F
  245. DECF NUM11,F ;NUM11 減 1
  246. BTFSS STATUS,Z ;判斷是否為 0
  247. GOTO JIABAI ;不為 0,返回加百
  248. RETURN ;為 0,返回
  249. ;加十 2 子程序
  250. JIASHI2 MOVLW .10 ;NUM10 加 10
  251. ADDWF NUM10,F
  252. DECF NUM6,F ;NUM6 減 1
  253. BTFSS STATUS,Z ;是否為 0
  254. GOTO JIASHI2 ;否,繼續(xù)加十
  255. RETURN ;是,返回
  256. ;鍵盤子程序,用于判斷是否鍵入和鍵入何鍵,并實(shí)現(xiàn)相應(yīng)功能
  257. JIANPAN MOVLW 00H ;RC 口低四位輸出低電平
  258. MOVWF PORTC
  259. MOVLW 0F0H
  260. ANDWF PORTC,W ;屏蔽低四位
  261. SUBLW 0F0H
  262. BTFSC STATUS,Z ;判斷高四位是否為全 1
  263. RETURN ;是,無鍵輸入,返回繼續(xù)判斷
  264. CALL DELAY10MS ;否,有可能有鍵輸入,延時(shí) 20 毫秒
  265. CALL DELAY10MS
  266. MOVLW 0F0H ;再判斷一次是否鍵入
  267. ANDWF PORTC,W
  268. SUBLW 0F0H
  269. BTFSC STATUS,Z
  270. RETURN ;虛假輸入,返回
  271. BCF PORTB,5 ;確實(shí)有鍵輸入,蜂鳴器鳴叫
  272. MOVLW 0FEH ;逐行判斷哪個(gè)鍵輸入,首先 RC0=0
  273. MOVWF PORTC
  274. BTFSS PORTC,4 ;判斷鍵 0
  275. GOTO JIAN0 ;是,跳至鍵 0 功能子程序
  276. BTFSS PORTC,5 ;判斷鍵 1
  277. GOTO JIAN1 ;是,跳至鍵 1 功能子程序
  278. BTFSS PORTC,6 ;判斷鍵 2
  279. GOTO JIAN2 ;是,跳至鍵 2 功能子程序
  280. BTFSS PORTC,7 ;判斷鍵 3
  281. GOTO JIAN3 ;是,跳至鍵 3 功能子程序
  282. MOVLW 0FDH ;RC1=0
  283. MOVWF PORTC
  284. BTFSS PORTC,4 ;判斷鍵 4
  285. GOTO JIAN4 ;是,跳至鍵 4 功能子程序
  286. BTFSS PORTC,5 ;判斷鍵 5
  287. GOTO JIAN5 ;是,跳至鍵 5 功能子程序
  288. BTFSS PORTC,6 ;判斷鍵 6
  289. GOTO JIAN6 ;是,跳至鍵 6 功能子程序
  290. BTFSS PORTC,7 ;判斷鍵 7
  291. GOTO JIAN7 ;是,跳至鍵 7 功能子程序
  292. MOVLW 0FBH ;RC2=0
  293. MOVWF PORTC
  294. BTFSS PORTC,4 ;判斷鍵 8
  295. GOTO JIAN8 ;是,跳至鍵 8 功能子程序
  296. BTFSS PORTC,5 ;判斷鍵 9
  297. GOTO JIAN9 ;是,跳至鍵 9 功能子程序
  298. BTFSS PORTC,6 ;判斷鍵 A
  299. GOTO JIANA ;是,跳至鍵 A 功能子程序
  300. BTFSS PORTC,7 ;判斷鍵 B
  301. GOTO JIANB ;是,跳至鍵 B 功能子程序
  302. MOVLW 0F7H ;RC3=0
  303. MOVWF PORTC
  304. BTFSS PORTC,4 ;判斷鍵 C
  305. GOTO JIANC ;是,跳至鍵 C 功能子程序
  306. BTFSS PORTC,5 ;判斷鍵 D
  307. GOTO JIAND ;是,跳至鍵 D 功能子程序
  308. BTFSS PORTC,6 ;判斷鍵 E
  309. GOTO JIANE ;是,跳至鍵 E 功能子程序
  310. BTFSS PORTC,7 ;判斷鍵 F
  311. GOTO JIANF ;是,跳至鍵 F 功能子程序
  312. RETURN
  313. ;0 到 9 按鍵,用于鍵入數(shù)字
  314. JIAN0 CALL SFANG ;釋放
  315. MOVLW 00H ;將 0 放入 W 寄存器
  316. MOVWF NUM8 ;NUM8 帶 0 返回
  317. CALL CHABIAO ;調(diào)用查表子程序
  318. MOVWF BIAN ;BIAN 帶 0 顯示碼返回
  319. RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
  320. RETURN
  321. JIAN1 CALL SFANG ;釋放
  322. MOVLW 01H ;將 1 放入 W 寄存器
  323. MOVWF NUM8 ;NUM8 帶 1 返回
  324. CALL CHABIAO ;調(diào)用查表子程序
  325. MOVWF BIAN ;BIAN 帶 1 顯示碼返回
  326. RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
  327. RETURN
  328. JIAN2 CALL SFANG ;釋放
  329. MOVLW 02H ;將 2 放入 W 寄存器
  330. MOVWF NUM8 ;NUM8 帶 2 返回
  331. CALL CHABIAO ;調(diào)用查表子程序
  332. MOVWF BIAN ;BIAN 帶 2 顯示碼返回
  333. RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
  334. RETURN
  335. JIAN3 CALL SFANG ;釋放
  336. MOVLW 03H ;將 3 放入 W 寄存器
  337. MOVWF NUM8 ;NUM8 帶 3 返回
  338. CALL CHABIAO ;調(diào)用查表子程序
  339. MOVWF BIAN ;BIAN 帶 3 顯示碼返回
  340. RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
  341. RETURN
  342. JIAN4 CALL SFANG ;釋放
  343. MOVLW 04H ;將 4 放入 W 寄存器
  344. MOVWF NUM8 ;NUM8 帶 4 返回
  345. CALL CHABIAO ;調(diào)用查表子程序
  346. MOVWF BIAN ;BIAN 帶 4 顯示碼返回
  347. RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
  348. RETURN
  349. JIAN5 CALL SFANG ;釋放
  350. MOVLW 05H ;將 5 放入 W 寄存器
  351. MOVWF NUM8 ;NUM8 帶 5 返回
  352. CALL CHABIAO ;調(diào)用查表子程序
  353. MOVWF BIAN ;BIAN 帶 5 顯示碼返回
  354. RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
  355. RETURN
  356. JIAN6 CALL SFANG ;釋放
  357. MOVLW 06H ;將 6 放入 W 寄存器
  358. MOVWF NUM8 ;NUM8 帶 6 返回
  359. CALL CHABIAO ;調(diào)用查表子程序
  360. MOVWF BIAN ;BIAN 帶 6 顯示碼返回
  361. RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
  362. RETURN
  363. JIAN7 CALL SFANG ;釋放
  364. MOVLW 07H ;將 7 放入 W 寄存器
  365. MOVWF NUM8 ;NUM8 帶 7 返回
  366. CALL CHABIAO ;調(diào)用查表子程序
  367. MOVWF BIAN ;BIAN 帶 7 顯示碼返回
  368. RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
  369. RETURN
  370. JIAN8 CALL SFANG ;釋放
  371. MOVLW 08H ;將 8 放入 W 寄存器
  372. MOVWF NUM8 ;NUM8 帶 8 返回
  373. CALL CHABIAO ;調(diào)用查表子程序
  374. MOVWF BIAN ;BIAN 帶 8 顯示碼返回
  375. RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
  376. RETURN
  377. JIAN9 CALL SFANG ;釋放
  378. MOVLW 09H ;NUM8 帶 9 返回
  379. MOVWF NUM8 ;將 9 放入 W 寄存器
  380. CALL CHABIAO ;調(diào)用查表子程序
  381. MOVWF BIAN ;BIAN 帶 9 顯示碼返回
  382. RLF KEYFLAG,1 ;鍵按下一次,KEYFLAG 左移一位
  383. RETURN
  384. ;A 鍵,用于倒計(jì)時(shí)的開始
  385. JIANA CALL SFANG ;釋放
  386. BSF INTCON,5 ;T0 使能打開,為定時(shí)器開啟做準(zhǔn)備
  387. MOVLW 3DH ;為定時(shí)器送初值,定時(shí)開始
  388. MOVWF TMR0
  389. GOTO LOOP6 ;進(jìn)入倒計(jì)時(shí)顯示大循環(huán)
  390. RETURN
  391. ;B 鍵,用于計(jì)數(shù)暫停
  392. JIANB CALL SFANG ;釋放
  393. BCF INTCON,5 ;T0 使能關(guān)閉,計(jì)數(shù)停止
  394. RETURN
  395. ;C 鍵,用于計(jì)數(shù)繼續(xù)
  396. JIANC CALL SFANG ;釋放
  397. BSF INTCON,5 ;T0 使能打開,計(jì)數(shù)繼續(xù)
  398. RETURN
  399. ;D 鍵,用于計(jì)數(shù)加一
  400. JIAND CALL SFANG ;釋放
  401. INCF NUMB ;顯示變量加一
  402. RETURN
  403. ;E 鍵,用于計(jì)數(shù)減一
  404. JIANE CALL SFANG ;釋放
  405. DECF NUMB ;顯示變量減一
  406. RETURN
  407. ;F 鍵,用于清零和重新開始
  408. JIANF CALL SFANG ;調(diào)用釋放子程序
  409. BCF INTCON,5 ;T0 使能關(guān)閉,停止計(jì)時(shí)
  410. MOVLW 01H ;鍵盤次數(shù)判斷恢復(fù)初始值
  411. MOVWF KEYFLAG
  412. CLRF NUM9 ;中間變量的初始化
  413. CLRF NUM10
  414. GOTO LOOP ;跳轉(zhuǎn)至 LOOP 大循環(huán)
  415. ;釋放子程序
  416. SFANG MOVLW 00H ;RC 口低四位輸出賦低電平
  417. MOVWF PORTC
  418. MOVLW 0F0H ;屏蔽低四位
  419. ANDWF PORTC,W
  420. SUBLW 0F0H
  421. BTFSS STATUS,Z ;判斷高四位是否有低電平
  422. GOTO SFANG ;有低電平,未釋放,返回繼續(xù)判斷
  423. CALL DELAY10MS ;無低電平,延時(shí) 10 毫秒
  424. MOVLW 0F0H ;再次確認(rèn)
  425. ANDWF PORTC,W
  426. SUBLW 0F0H
  427. BTFSS STATUS,Z ;再次判斷
  428. GOTO SFANG ;虛假釋放,返回繼續(xù)判斷
  429. BSF PORTB,5 ;已釋放,蜂鳴器停止鳴叫
  430. RETURN ;返回
  431. ;10 毫秒延時(shí)子程序
  432. DELAY10MS
  433.         MOVLW 0DH
  434.         MOVWF 23H
  435. LOOP4 MOVLW 0FFH
  436.         MOVWF 24H
  437. LOOP5 DECFSZ 24H
  438.         GOTO LOOP5
  439.         DECFSZ 23H
  440.         GOTO LOOP4
  441.         RETURN
  442. ;短時(shí)間延時(shí)子程序
  443. DELAY        DECFSZ 0X30,F
  444.         GOTO DELAY
  445.         RETURN
  446. ;小燈閃爍子程序,3 種顏色的小燈每隔 1 秒交替亮滅 1 秒
  447. SHANSHU BCF PORTE,0 ;燈 0 亮
  448.         BCF PORTB,5 ;蜂鳴器開
  449.         CALL DELAY1S
  450.         MOVLW 0FFH ;燈 0 滅
  451.         BSF PORTB,5 ;蜂鳴器關(guān)
  452.         MOVWF PORTE
  453.         CALL DELAY1S
  454.         BCF PORTE,1 ;燈 1 亮
  455.         BCF PORTB,5 ;蜂鳴器開
  456.         CALL DELAY1S
  457.         MOVLW 0FFH ;燈 1 滅
  458.         BSF PORTB,5 ;蜂鳴器關(guān)
  459.         MOVWF PORTE
  460.         CALL DELAY1S
  461.         BCF PORTE,2 ;燈 2 亮
  462.         BCF PORTB,5 ;蜂鳴器開
  463.         CALL DELAY1S
  464.         MOVLW 0FFH ;燈 2 滅
  465.         BSF PORTB,5 ;蜂鳴器關(guān)
  466.         MOVWF PORTE
  467.         CALL DELAY1S
  468.         RETURN
  469. ;1 秒延時(shí)子程序
  470. DELAY1S MOVLW 06H
  471.         MOVWF 20H
  472. LOOP1 MOVLW 0EBH
  473.         MOVWF 21H
  474. LOOP2 MOVLW 0ECH
  475.         MOVWF 22H
  476. LOOP3 DECFSZ 22H
  477.         GOTO LOOP3
  478.         DECFSZ 21H
  479.         GOTO LOOP2
  480.         DECFSZ 20H
  481.         GOTO LOOP1
  482.         RETURN
  483.         END
復(fù)制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:868787 發(fā)表于 2020-12-28 13:07 | 只看該作者
子文件需要你自己保存呢,百度一下,很簡(jiǎn)單的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频一区 | 欧美中文在线 | 91精品国产91久久久久久不卞 | 国产一二三区精品视频 | 精品日韩一区二区三区 | 黄视频免费 | 夜夜夜操| 精品国产乱码久久久久久闺蜜 | 九色av| 国产成人精品综合 | 国产亚洲日本精品 | 中文字幕第十页 | 久久视频免费看 | 91在线区| 一区二区高清 | 午夜国产一级 | 91在线看视频 | 成人免费在线播放 | 欧美成人a | 在线一区二区三区 | 精品国产91亚洲一区二区三区www | 亚洲国产一区二区三区 | a级在线观看 | 人操人人干人 | 美女在线观看av | 亚洲精品一区二区 | 久久亚洲天堂 | 天天干com | 韩日精品在线观看 | 久久精品伊人 | 久久国产视频网站 | 免费毛片在线 | 欧洲亚洲精品久久久久 | 在线看av网址 | 一区二区福利视频 | 91精品久久久久久久久 | 99久久免费精品国产男女高不卡 | 中文字幕亚洲视频 | 色精品| 青娱乐一区二区 | 欧美一区二区三区 |