《匠人手记》推荐网上购书渠道:
互动出版网(china-pub)购书入口   >>>
当当网(dangdang)购书入口   >>>
卓越亚马逊网 购书入口   >>>
淘宝网(taobao)购书入口   >>>
更多购书渠道……   >>> 

设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

天气预报
百宝日历
载入中...

百宝专栏

载入中...
最新货色

载入中...

粉丝评论

载入中...

载入中...



百宝信息

载入中...

百宝流量

(2006-07-01开始)


匠人手记

 匠人观点: 好记性不如烂笔头  
 黑色幽默:三鹿门——后世畅想

PIC16F877A实现音乐播放程序(《两只老虎》片段)
程序匠人 发表于 2007-6-29 12:57:00  阅读全文 | 回复(0) | 引用通告 | 编辑

;PIC16F877A实现音乐播放程序(《两只老虎》片段)

;功能说明:
;1.通过驱动实验板上的蜂鸣器发声,实现音乐的播放。
;2.从TABLE中取出播放音乐的音调(1、2....7)通过改变该表中的值即可实现播放不同的音乐。
;3.从TABLE_YP中取出播放音乐的音频,即该音调持续的时间。
;4.调整DELAY延时的长短即可实现音乐播放的快慢。

;本实战的目的是让大家进一步熟悉 D单片机如何驱动蜂鸣器发声。并通过改变持续发声的时间长短来实现不同频率的声音。

;硬件接法:
;1、蜂鸣器接RC6口。
;2、本程序使用实验板上的蜂鸣器发生发声,拨码开关13的第5位必须置1,其他码开关都可以关闭。

;本实例原提供者:pic16论坛会员 ppmy ,在此鸣谢ppmy同志共享本实例.
;由深圳市乾龙盛电子科技有限公司技术部钟闺田(工程师)(论坛网名:zhongruntian)验正并加于整理、注释.
;网站:PIC单片机学习网 http://www.pic16.com   讨论论坛:http://pic16.com/bbs/
;版权所有,转载请注明出处,并不能去掉或改变文件中的说明文字。
;程序文件名“SONG.ASM"
;程序清单如下:
;***********************************
    LIST      P=PIC16F877,R=DEC
    #i nclude  P16F877.INC
;***********************************
    Errorlevel -302,-305
 __CONFIG _DEBUG_OFF&_CP_ALL&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC;

;***********************************寄存器定义
    CBLOCK    0x20
    JP
    YP
    L1
    L2
    TA:2
    COUNT1
    COUNT2
    W_STACK
    ST_STACK
    ENDC
;************************************
    ORG    0X0000
    nop                             ;放置一条MCD所必须的空指令
    GOTO   MAIN                     ;主程序
    ORG    0x0004
    BTFSC  PIR1,TMR1IF              ;中断子程序
    GOTO   T1                       ;转T1处理     
    RETFIE
    ORG    0x0010
;************************************
MAIN
    CLRWDT                          ;喂狗
    BCF    STATUS,RP0
    CLRF   INTCON                   ;清除其他中断标志位
    CLRF   PORTC
    CLRF   PIR1                     ;清除TMR1中断标志位
    BSF    STATUS,RP0
    BSF    PIE1,0                   ;使能TMR1中断
    MOVLW  B'10111111'              ;除RC6口输出外,其他口都设为输入
    MOVWF  TRISC                   
    BCF    STATUS,RP0
    MOVLW  0xC0                     ;开启中断总允许位GIE跟PEIE
    MOVWF  INTCON
REPLAY
    CLRF   COUNT1                   ;从头开始查表(亦即从头开始唱歌)
SING
    CLRF   TMR1L                   
    CLRF   TMR1H                    ;清零TMR1定器
    MOVF   COUNT1,0
    CALL   TABLE                   
    MOVWF  COUNT2                   ;暂存查表结果于COUNT2中
    BCF    STATUS,Z
    SUBLW  0x00                     ;判断是否查表到最后一个数值
    BTFSC  STATUS,Z
    GOTO   REPLAY                   ;是,说明音乐播放完成,重头开始播放
    MOVF   COUNT2,0   
    ANDLW  0x0F                     ;去掉高4位只保留低4位
    MOVWF  JP                       ;保存到JP中
    SWAPF  COUNT2,0                 ;高低半字节交换
    ANDLW  0x0F                     ;去掉高4位只保留低4位
    MOVWF  YP                       ;保存到YP中,这样查表的结果的被分成高低半字节两部分分别存放在YP跟JP中
    DECF   YP,1
    MOVF   YP,0
    CALL   TABLE_YP                
    MOVWF  TMR1H                    ;作为TMR1初值的高8位
    MOVWF  TA                       ;暂存TA中
    INCF   YP,0
    CALL   TABLE_YP
    MOVWF  TMR1L                    ;作为TMR1初值的低8位
    MOVWF  TA+1                     ;暂存TA+1中
    BSF    T1CON,TMR1ON             ;开启TMR1定时器
    CALL   DELAY                    ;延时一段时间
    INCF   COUNT1                   ;COUNT1加1,以便查表得到下一个播放的音调
    GOTO   SING                     ;返回播放下一个音调

;**************************延时程序
DELAY                        
    MOVLW  200           
    MOVWF  L1           
DELAY_1
    MOVLW  225           
    MOVWF  L2            
DELAY_2
    DECFSZ L2,1         
    GOTO   DELAY_2        
    DECFSZ L1,1         
    GOTO   DELAY_1                        
    DECFSZ JP,1
    GOTO   DELAY
    CLRWDT
    RETURN 
;*************************中断现场保护             
PUSH
    MOVWF  W_STACK                ;保存W的值
    MOVF   STATUS,0
    MOVWF  ST_STACK               ;保存STATUS的值
    RETURN
;************************中断现场恢复
POP
    MOVF   ST_STACK,0
    MOVWF  STATUS                 ;恢复STATUS的值
    MOVF   W_STACK,0              ;恢复W的值
    RETURN
;************************中断处理子程序
T1
    CALL   PUSH                   ;调用现场保护程序
    MOVLW  0x40                   ;RC6口输出取反
    XORWF  PORTC,1
    MOVF   TA,0                 
    MOVWF  TMR1H                 
    MOVF   TA+1,0
    MOVWF  TMR1L                  ;给TMR1赋初值
    BSF    T1CON,TMR1ON           ;开启定时器
    BCF    PIR1,TMR1IF            ;清除标志位
    CALL   POP                    ;调用现场恢复程序
    RETFIE

TABLE_YP
    ADDWF  PCL,1       
    RETLW  0xFC   ;1
    RETLW  0x44
    RETLW  0xFC   ;2
    RETLW  0xAC
    RETLW  0xFD   ;3
    RETLW  0x09
    RETLW  0xFD   ;4
    RETLW  0x34
    RETLW  0xFD   ;5
    RETLW  0x82
    RETLW  0xFD   ;6
    RETLW  0xC8
    RETLW  0xFE   ;7
    RETLW  0x06  
TABLE
    ADDWF  PCL,1
    RETLW  0x14
    RETLW  0x34
    RETLW  0x54
    RETLW  0x14
    RETLW  0x14
    RETLW  0x34
    RETLW  0x54
    RETLW  0x14
    RETLW  0x54
    RETLW  0x74
    RETLW  0x98
    RETLW  0x54
    RETLW  0x74
    RETLW  0x98
    RETLW  0x93
    RETLW  0xB1
    RETLW  0x93
    RETLW  0x71
    RETLW  0x54
    RETLW  0x14
    RETLW  0x93
    RETLW  0xB1
    RETLW  0x93
    RETLW  0x71
    RETLW  0x54
    RETLW  0x14
    RETLW  0x14
    RETLW  0x94
    RETLW  0x18
    RETLW  0x14
    RETLW  0x94
    RETLW  0x18
    RETLW  0x00   
;********************************************
       end                   ;源程序结束
;********************************************
          
;  进入该实战演练的工序流程如下:
;  1.创建源文件和编辑源文件;在此介绍一种不同于前面讲的创建源文件的方法,用Windows附件中的”记事本”
;  这个为大家所熟知和好用的文件编辑器,并且可以方便的加入中文注释.不过有两点需要注意,一是注释前面的
;  分号”;”必须用西文半角输入;二是必须用”.asm”扩展名存储到事先建立的一个专用子目录下.
;  2.打开MPLAB集成开发环境:首先在WINDOWS环境下,选用开始>程序>Microchip MPLAB>MPLAB命令,启动MPLAB
;  并进入MPLAB的桌面.
;  3.创建项目:选用菜单File>New或Project>New Project,在事先建立的一个专用子目录下创建一个新项目,将
;  用记事本创建的源文件加入到该项目中.
;  4.建立项目中的目标文件:选择菜单Project >Build All(项目>建立所有文件),MPLAB将自动调用MPASM将项目
;  文件管理下的源文件(.asm)汇编成十六进制的目标文件(.hex).

OPTION_REG  EQU 81H      ;
TRISA       EQU 85H      ;定义RA口方向控制寄存器
TRISB       EQU 86H      ;定义RB口方向控制寄存器
TRISC       EQU 87H      ;定义RC口方向控制寄存器
ADCON1      EQU 9FH      ;定义ADC模块控制寄存器1的地址
;-----------------------STATUS
C           EQU 0        ;定义进位标志位位地址
Z           EQU 2         ;定义0标志位位地址
RP0         EQU 5          ;寄存器体选
;-------------------------INTCON
T0IF        EQU 2          ;定时器0溢出中断标志位
T0IE        EQU 5          ;定时器0溢出中断允许/禁止
GIE         EQU 7          ;总中断允许/禁止
;-------------------------
RMT         EQU 1          ;遥控接收输入脚位地址(RA。1)
;-------------------------
BITIN       EQU 7           ;遥控接收数据位位标志
;-------------------------
CNT0         EQU 20H          ;用户临时寄存器1
CNT1         EQU 21H          ;用户临时寄存器2
CNT2         EQU 22H          ;用户临时寄存器3
CNT3         EQU 23H          ;用户临时寄存器4
TABADD       EQU 24H          ;数码管显示码取码用寄存器
FLAGS        EQU 25H         ;显示位选标志位
DISPBUF_H    EQU 26H         ;显示器高位
DISPBUF_L    EQU 27H         ;显示器低位
W_TEMP       EQU 2BH         ;W现场保护寄存器
STATUS_TEMP  EQU 2CH         ;STATUS现场保护寄存器
CSR0         EQU 2DH         ;遥控键码反码寄存器
CSR1         EQU 2EH        ;遥控器键码寄存器
CSR2         EQU 2FH        ;遥控器用户码高8位寄存器
CSR3         EQU 30H        ;遥控器用户码低8位寄存器
FLAGS2       EQU 31H        ;临时寄存器
CSR0A        EQU 32H        ;遥控接收32位数据暂存寄存器
CSR1A        EQU 33H        ;遥控接收32位数据暂存寄存器
CSR2A        EQU 34H        ;遥控接收32位数据暂存寄存器
CSR3A        EQU 35H        ;遥控接收32位数据暂存寄存器
;--------------------
               ORG 0000H
               NOP             ;放置一条ICD必须的空操作指令
               GOTO MAIN
               ORG  0004H
               GOTO TMR0SERV    ;定时器中断,扫描数码管
               ORG  0008H
;-------------------------------------------------
CONVERT  
            MOVWF     PC                 ;将W寄存器内的7段显示码地址放入PC
TABLE                                       ;PC执行新地址指令, 跳到相对的地址执行?               
   RETLW       0C0H     ;0  ;RETLW指令,将七段显示码存入W后返回
   RETLW       0F9H    ;1                               
   RETLW       0A4H    ;2
   RETLW       0B0H    ;3
   RETLW       099H    ;4
   RETLW       092H    ;5
   RETLW       082H     ;6
   RETLW       0F8H            ;7
   RETLW       080H    ;8
   RETLW       090H    ;9
          RETLW       088H            ;A
          RETLW       083H            ;b
          RETLW       0A7H            ;c
          RETLW       0A1H            ;d
          RETLW       086H            ;E
          RETLW       08EH            ;F
;----- -----------------------------------------------
TMR0SERV
                MOVWF      W_TEMP            ;现场保护
                SWAPF      STATUS,W          ;用SWAPF才不会影响标志位
                MOVWF      STATUS_TEMP       ;将W和STATUS存入各保护寄存器

                MOVLW      0FFH
                MOVWF      PORTC             ;先熄灭所有数码管以免闪烁
                BSF        PORTA,4
                BSF        PORTA,5
                BSF        PORTA,0
                BSF        PORTA,2
                BSF        PORTA,3
 
                MOVLW      TABLE
                MOVWF      TABADD           ;将转换表的首地址存入TABADD 
                MOVFW      DISPBUF_L        ;计数值(W)与转换表的起始地址相加
                BTFSS      FLAGS,1
                MOVFW      DISPBUF_H
                ADDWF      TABADD,W
                CALL       CONVERT          ;存入W后调用转换表子程序
                MOVWF      PORTC            ;送RC口显示

                BTFSS      FLAGS,1          ;根据标志位选择是点亮那一个数码管
                BCF        PORTA,3
                BTFSC      FLAGS,1
                BCF        PORTA,2
                COMF       FLAGS,1

                MOVLW      .155         ;送定时器初值
                MOVWF      RTCC

;PIC16F877A实现音乐播放程序(《两只老虎》片段)

;功能说明:
;1.通过驱动实验板上的蜂鸣器发声,实现音乐的播放。
;2.从TABLE中取出播放音乐的音调(1、2....7)通过改变该表中的值即可实现播放不同的音乐。
;3.从TABLE_YP中取出播放音乐的音频,即该音调持续的时间。
;4.调整DELAY延时的长短即可实现音乐播放的快慢。

;本实战的目的是让大家进一步熟悉 D单片机如何驱动蜂鸣器发声。并通过改变持续发声的时间长短来实现不同频率的声音。

;硬件接法:
;1、蜂鸣器接RC6口。
;2、本程序使用实验板上的蜂鸣器发生发声,拨码开关13的第5位必须置1,其他码开关都可以关闭。

;本实例原提供者:pic16论坛会员 ppmy ,在此鸣谢ppmy同志共享本实例.
;由深圳市乾龙盛电子科技有限公司技术部钟闺田(工程师)(论坛网名:zhongruntian)验正并加于整理、注释.
;网站:PIC单片机学习网 http://www.pic16.com   讨论论坛:http://pic16.com/bbs/
;版权所有,转载请注明出处,并不能去掉或改变文件中的说明文字。
;程序文件名“SONG.ASM"
;程序清单如下:
;***********************************
    LIST      P=PIC16F877,R=DEC
    #i nclude  P16F877.INC
;***********************************
    Errorlevel -302,-305
 __CONFIG _DEBUG_OFF&_CP_ALL&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC;

;***********************************寄存器定义
    CBLOCK    0x20
    JP
    YP
    L1
    L2
    TA:2
    COUNT1
    COUNT2
    W_STACK
    ST_STACK
    ENDC
;************************************
    ORG    0X0000
    nop                             ;放置一条MCD所必须的空指令
    GOTO   MAIN                     ;主程序
    ORG    0x0004
    BTFSC  PIR1,TMR1IF              ;中断子程序
    GOTO   T1                       ;转T1处理     
    RETFIE
    ORG    0x0010
;************************************
MAIN
    CLRWDT                          ;喂狗
    BCF    STATUS,RP0
    CLRF   INTCON                   ;清除其他中断标志位
    CLRF   PORTC
    CLRF   PIR1                     ;清除TMR1中断标志位
    BSF    STATUS,RP0
    BSF    PIE1,0                   ;使能TMR1中断
    MOVLW  B'10111111'              ;除RC6口输出外,其他口都设为输入
    MOVWF  TRISC                   
    BCF    STATUS,RP0
    MOVLW  0xC0                     ;开启中断总允许位GIE跟PEIE
    MOVWF  INTCON
REPLAY
    CLRF   COUNT1                   ;从头开始查表(亦即从头开始唱歌)
SING
    CLRF   TMR1L                   
    CLRF   TMR1H                    ;清零TMR1定器
    MOVF   COUNT1,0
    CALL   TABLE                   
    MOVWF  COUNT2                   ;暂存查表结果于COUNT2中
    BCF    STATUS,Z
    SUBLW  0x00                     ;判断是否查表到最后一个数值
    BTFSC  STATUS,Z
    GOTO   REPLAY                   ;是,说明音乐播放完成,重头开始播放
    MOVF   COUNT2,0   
    ANDLW  0x0F                     ;去掉高4位只保留低4位
    MOVWF  JP                       ;保存到JP中
    SWAPF  COUNT2,0                 ;高低半字节交换
    ANDLW  0x0F                     ;去掉高4位只保留低4位
    MOVWF  YP                       ;保存到YP中,这样查表的结果的被分成高低半字节两部分分别存放在YP跟JP中
    DECF   YP,1
    MOVF   YP,0
    CALL   TABLE_YP                
    MOVWF  TMR1H                    ;作为TMR1初值的高8位
    MOVWF  TA                       ;暂存TA中
    INCF   YP,0
    CALL   TABLE_YP
    MOVWF  TMR1L                    ;作为TMR1初值的低8位
    MOVWF  TA+1                     ;暂存TA+1中
    BSF    T1CON,TMR1ON             ;开启TMR1定时器
    CALL   DELAY                    ;延时一段时间
    INCF   COUNT1                   ;COUNT1加1,以便查表得到下一个播放的音调
    GOTO   SING                     ;返回播放下一个音调

;**************************延时程序
DELAY                        
    MOVLW  200           
    MOVWF  L1           
DELAY_1
    MOVLW  225           
    MOVWF  L2            
DELAY_2
    DECFSZ L2,1         
    GOTO   DELAY_2        
    DECFSZ L1,1         
    GOTO   DELAY_1                        
    DECFSZ JP,1
    GOTO   DELAY
    CLRWDT
    RETURN 
;*************************中断现场保护             
PUSH
    MOVWF  W_STACK                ;保存W的值
    MOVF   STATUS,0
    MOVWF  ST_STACK               ;保存STATUS的值
    RETURN
;************************中断现场恢复
POP
    MOVF   ST_STACK,0
    MOVWF  STATUS                 ;恢复STATUS的值
    MOVF   W_STACK,0              ;恢复W的值
    RETURN
;************************中断处理子程序
T1
    CALL   PUSH                   ;调用现场保护程序
    MOVLW  0x40                   ;RC6口输出取反
    XORWF  PORTC,1
    MOVF   TA,0                 
    MOVWF  TMR1H                 
    MOVF   TA+1,0
    MOVWF  TMR1L                  ;给TMR1赋初值
    BSF    T1CON,TMR1ON           ;开启定时器
    BCF    PIR1,TMR1IF            ;清除标志位
    CALL   POP                    ;调用现场恢复程序
    RETFIE

TABLE_YP
    ADDWF  PCL,1       
    RETLW  0xFC   ;1
    RETLW  0x44
    RETLW  0xFC   ;2
    RETLW  0xAC
    RETLW  0xFD   ;3
    RETLW  0x09
    RETLW  0xFD   ;4
    RETLW  0x34
    RETLW  0xFD   ;5
    RETLW  0x82
    RETLW  0xFD   ;6
    RETLW  0xC8
    RETLW  0xFE   ;7
    RETLW  0x06  
TABLE
    ADDWF  PCL,1
    RETLW  0x14
    RETLW  0x34
    RETLW  0x54
    RETLW  0x14
    RETLW  0x14
    RETLW  0x34
    RETLW  0x54
    RETLW  0x14
    RETLW  0x54
    RETLW  0x74
    RETLW  0x98
    RETLW  0x54
    RETLW  0x74
    RETLW  0x98
    RETLW  0x93
    RETLW  0xB1
    RETLW  0x93
    RETLW  0x71
    RETLW  0x54
    RETLW  0x14
    RETLW  0x93
    RETLW  0xB1
    RETLW  0x93
    RETLW  0x71
    RETLW  0x54
    RETLW  0x14
    RETLW  0x14
    RETLW  0x94
    RETLW  0x18
    RETLW  0x14
    RETLW  0x94
    RETLW  0x18
    RETLW  0x00   
;********************************************
       end                   ;源程序结束
;********************************************
          
;  进入该实战演练的工序流程如下:
;  1.创建源文件和编辑源文件;在此介绍一种不同于前面讲的创建源文件的方法,用Windows附件中的”记事本”
;  这个为大家所熟知和好用的文件编辑器,并且可以方便的加入中文注释.不过有两点需要注意,一是注释前面的
;  分号”;”必须用西文半角输入;二是必须用”.asm”扩展名存储到事先建立的一个专用子目录下.
;  2.打开MPLAB集成开发环境:首先在WINDOWS环境下,选用开始>程序>Microchip MPLAB>MPLAB命令,启动MPLAB
;  并进入MPLAB的桌面.
;  3.创建项目:选用菜单File>New或Project>New Project,在事先建立的一个专用子目录下创建一个新项目,将
;  用记事本创建的源文件加入到该项目中.
;  4.建立项目中的目标文件:选择菜单Project >Build All(项目>建立所有文件),MPLAB将自动调用MPASM将项目
;  文件管理下的源文件(.asm)汇编成十六进制的目标文件(.hex).

               MOVFW       CSR0A            ;将临时寄存器中的数存回相应寄存器
               MOVWF       CSR0
               MOVFW       CSR1A
               MOVWF       CSR1
               MOVFW       CSR2A
               MOVWF       CSR2
               MOVFW       CSR3A
               MOVWF       CSR3
   
               COMF        CSR0,0           ;比较键码的反码取反后是否等于键码
               XORWF       CSR1,0
               BNZ         LOOP             ;不等于则接收到的是错误的信息
                                            ;将键码送显示
               SWAPF       CSR1,W        ;显示值高低位交换,先处理高位
               ANDLW       0FH           ;屏蔽掉高位
               MOVWF       DISPBUF_H     ;存入寄存器
               MOVFW       CSR1          ;显示值低位处理
               ANDLW       0FH           ;屏蔽掉高位
               MOVWF       DISPBUF_L     ;存入寄存器      
               GOTO       LOOP
;------------------------------------------------------
     END
;***********************************************************
;    进入该实战演练的工序流程如下:
;    1.创建源文件和编辑源文件;在此介绍一种不同于前面讲的创建源文件的方法,用Windows附件中的”记事本”
;   这个为大家所熟知和好用的文件编辑器,并且可以方便的加入中文注释.不过有两点需要注意,一是注释前面的
;   分号”;”必须用西文半角输入;二是必须用”.asm”扩展名存储到事先建立的一个专用子目录下.
;    2.打开MPLAB集成开发环境:首先在WINDOWS环境下,选用开始>程序>Microchip MPLAB>MPLAB命令,启动MPLAB
;   并进入MPLAB的桌面.
;    3.创建项目:选用菜单File>New或Project>New Project,在事先建立的一个专用子目录下创建一个新项目,将
;   用记事本创建的源文件加入到该项目中.
;    4.建立项目中的目标文件:选择菜单Project >Build All(项目>建立所有文件),MPLAB将自动调用MPASM将项目
;   文件管理下的源文件(.asm)汇编成十六进制的目标文件(.hex).
;    5.ICD参数设置:通过菜单命令Project>Edit Project或者Option>Development Mode,将开发模式设置为
;   ”MPLAB ICD Debugger”,点击OK按钮,打开ICD的工作窗口,在调试阶段,可以按照说明书图2-10设置各项,但需注意
;   OSCILLATOR应设置为XT方式,尤其需要说明的是,选中“Enable Debug Mode”(使能调试模式)选项,在向目
;   标单片机烧写机器码程序时,会将调试临控程序同时写入单片机的指定程序存储器区域,然后才允许用ICD方式调试。
;    6.电路设置:将演示板的S1全部拔到OFF,S13的第3位拔到ON其它位OFF,S4全部拔到ON,S5的第5第6位拔到ON其它位OFF,LCD不要插在演示板上,
;   将用于选择频率的插针跳线插到”XT OSC”位置上,板上93CXX、24CXX应拿下。
;    7.向目标单片机烧写目标程序:用户在点击功能按钮”Program”向目标单片机烧写机器码程序时,会等待一段时间,
;   并且在条状的状态信息栏中,出现提示信息。有一点需要引起注意,就是PIC16F87X单片机的FLASH程序存储器的擦写
;   周期是有限的,大约为1000次,应尽量节省它的使用寿命。
;    8.运行和调试用户程序和用户电路:在各项参数设置好后,将ICD的工作窗口最小化,利用前面讲的”运行及调试”中介
;   绍的几种方法进行调试.当用自动单步方式调试时,建议临时禁止廷时子程序发挥作用,具体的方法是,可在CALL DELAY指
;   令前添加一个分号,并且重新汇编一次.为了学习目的,在调试过程中可以人为地加入一些软件漏洞(BUG)或硬件故障,来模
;   仿单片机端口引脚的片内或片外故障.
;    9.定型烧写目标单片机;经过多次重复上述步骤的反复修改和调试,使得程序和电路在联机状态完全正常,这时可以进行
;   定型烧写,即将ICD窗口中的”Enable Debug Mode”(使能调试模式)选项消除,不再将调试临控程序写入单片机中.
;    10.独立运行验收:上一步中的烧写过程完成后,即可将ICD模块和ICD仿真头(或演示板)之间的6芯电缆断开,让单片机在
;   演示板独立运行,观察实际效果.
;
;


 

看《匠人手记》,与匠人同行!北航出版,正在热卖!

发表评论:
载入中...

芯片专题

器件专题

软件专题

硬件专题

综合专题

项目专题

原创专题

器件检测
LCD LED
按键 触摸键
E2PROM
电池 电机
电阻 电容 电感

指令系统
软件算法
编程规范
滤波算法
串行通讯

PCB设计
I2C PWM
红外遥控
充电技术
中断 ADC 

匠人手记
匠人夜话
网络心路
一周热点串烧
从零开始玩PIC
DIY旋转时钟

广告5号位 [投放]


学习板、开发板、编程器、下载器、仿真器(查看详情……)

广告3号位 [投放]

站内搜索


站外搜索


百度  google
mp3  歌词 
图片  FLASH 
知道  文档
新闻  词典 
地图  mp3 
软件  天网 
雅虎  爱问 
搜狗  讯雷 
网讯  华军 
天空 

21IC器件搜索
百宝箱分站
  • 《匠人的百宝箱》21IC站
  • 《匠人的百宝箱》21IC笔记团队
  • 《匠人手记》21IC书友会
  • 《匠人的百宝箱》MCUBLOG站
  • 《匠人的百宝箱》MCUBLOG笔记团队
  • 《匠人的百宝箱》EDN站
  • 《匠人手记》EDN书友会
  • 《匠人的百宝箱》与非网站
  • 《匠人的百宝箱》新浪站
  • 《匠人的百宝箱》百度站
  • 《匠人的百宝箱》网易126站
  • 《匠人的百宝箱》网易163站
  • 《匠人的百宝箱》互动出版网站
  • 广告4号位 [投放]

     
     

    匠人原创

    往日酷贴

     
     
     

    大千八卦

    友情连接

    新浪新闻:
    新浪财经:
    AK58新闻:
    新浪股票:
    新浪股票:
    证券之星:

     [更多酷站连接]

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [IC921的博客]

    [柔月阁]

    [八楼的呼吸]

    [hotpower 的水潭]

    [xwj的文君阁]

    [所长的BLOG]

    [阿摆手记]

    [电子伙伴]

    [unaided的笔记]

    [小飞的笔记]

    [单片机开发联盟]

    [网址之家]

    [好东西网址大全]

    [美萍中文精选]

    [数字电视之家]

    [SMARTCODE电子书斋]

    [软件开发之窗]

    [Armoric]

    [我爱研发网]

    [infernal的笔记]

    [雄鹰的空中加油站]

    [SunK]

    [逍遥电子]

    [ningpanda的博客]

    [