📄 pwmtest.lst
字号:
00008a cff8 MOVFF 0xff8,0x89
00008c f089
C:\mcc18\src\traditional\startup\c018i.c
/* now assign the source address to the table pointer */ C:\mcc18\src\traditional\startup\c018i.c
00008e c080 MOVFF 0x80,0xff6 TBLPTR = prom; C:\mcc18\src\traditional\startup\c018i.c
000090 fff6
000092 c081 MOVFF 0x81,0xff7
000094 fff7
000096 c082 MOVFF 0x82,0xff8
000098 fff8
C:\mcc18\src\traditional\startup\c018i.c
/* do the copy loop */ C:\mcc18\src\traditional\startup\c018i.c
_asm C:\mcc18\src\traditional\startup\c018i.c
// determine if we have any more bytes to copy C:\mcc18\src\traditional\startup\c018i.c
00009a 0100 MOVLB 0x0 movlb curr_byte C:\mcc18\src\traditional\startup\c018i.c
00009c 5383 MOVF 0x83,0x1,0x1 movf curr_byte, 1, 1 C:\mcc18\src\traditional\startup\c018i.c
copy_loop: C:\mcc18\src\traditional\startup\c018i.c
00009e e102 BNZ 0xa4 bnz 2 // copy_one_byte C:\mcc18\src\traditional\startup\c018i.c
0000a0 5384 MOVF 0x84,0x1,0x1 movf curr_byte + 1, 1, 1 C:\mcc18\src\traditional\startup\c018i.c
0000a2 e007 BZ 0xb2 bz 7 // done_copying C:\mcc18\src\traditional\startup\c018i.c
C:\mcc18\src\traditional\startup\c018i.c
copy_one_byte: C:\mcc18\src\traditional\startup\c018i.c
0000a4 0009 TBLRDPOSTINC tblrdpostinc C:\mcc18\src\traditional\startup\c018i.c
0000a6 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\mcc18\src\traditional\startup\c018i.c
0000a8 6eee MOVWF 0xee,0x0 movwf POSTINC0, 0 C:\mcc18\src\traditional\startup\c018i.c
C:\mcc18\src\traditional\startup\c018i.c
// decrement byte counter C:\mcc18\src\traditional\startup\c018i.c
0000aa 0783 DECF 0x83,0x1,0x1 decf curr_byte, 1, 1 C:\mcc18\src\traditional\startup\c018i.c
0000ac e2f8 BC 0x9e bc -8 // copy_loop C:\mcc18\src\traditional\startup\c018i.c
0000ae 0784 DECF 0x84,0x1,0x1 decf curr_byte + 1, 1, 1 C:\mcc18\src\traditional\startup\c018i.c
0000b0 d7f9 BRA 0xa4 bra -7 // copy_one_byte C:\mcc18\src\traditional\startup\c018i.c
C:\mcc18\src\traditional\startup\c018i.c
done_copying: C:\mcc18\src\traditional\startup\c018i.c
C:\mcc18\src\traditional\startup\c018i.c
_endasm C:\mcc18\src\traditional\startup\c018i.c
/* restore the table pointer for the next entry */ C:\mcc18\src\traditional\startup\c018i.c
0000b2 c087 MOVFF 0x87,0xff6 TBLPTR = data_ptr; C:\mcc18\src\traditional\startup\c018i.c
0000b4 fff6
0000b6 c088 MOVFF 0x88,0xff7
0000b8 fff7
0000ba c089 MOVFF 0x89,0xff8
0000bc fff8
/* next entry... */ C:\mcc18\src\traditional\startup\c018i.c
0000be 0100 MOVLB 0x0 curr_entry--; C:\mcc18\src\traditional\startup\c018i.c
0000c0 0785 DECF 0x85,0x1,0x1
0000c2 0e00 MOVLW 0x0
0000c4 5b86 SUBWFB 0x86,0x1,0x1
0000c6 d7bf BRA 0x46 goto test; C:\mcc18\src\traditional\startup\c018i.c
done: C:\mcc18\src\traditional\startup\c018i.c
; C:\mcc18\src\traditional\startup\c018i.c
0000c8 0012 RETURN 0x0 } C:\mcc18\src\traditional\startup\c018i.c
#include "p18f452.h" F:\PWMTest\PWM3.c
/* **************************************************************** F:\PWMTest\PWM3.c
** 函 数 名: initial() F:\PWMTest\PWM3.c
** 功能描述: 系统初始化子程序,放在程序首部 F:\PWMTest\PWM3.c
*************************************************************** */ F:\PWMTest\PWM3.c
void initial(void) F:\PWMTest\PWM3.c
{ F:\PWMTest\PWM3.c
0000ca 6af2 CLRF 0xf2,0x0 INTCON=0x00; //* bit7-bit0:关总中断 */ F:\PWMTest\PWM3.c
0000cc 0e07 MOVLW 0x7 ADCON1=0X07; //* 设置数字输入输出口 */ F:\PWMTest\PWM3.c
0000ce 6ec1 MOVWF 0xc1,0x0
0000d0 6a9d CLRF 0x9d,0x0 PIE1=0; //* PIE1 的中断不使能 */ F:\PWMTest\PWM3.c
0000d2 6aa0 CLRF 0xa0,0x0 PIE2=0; //* PIE2 的中断不使能 */ F:\PWMTest\PWM3.c
// PIE3=0; //* PIE3 的中断不使能 */ F:\PWMTest\PWM3.c
0000d4 0012 RETURN 0x0 } F:\PWMTest\PWM3.c
/* ************************************************************** F:\PWMTest\PWM3.c
** 函 数 名: PWMSet() F:\PWMTest\PWM3.c
** 功 能:CCP1输出PWM设置,设置完成后即输出PWM F:\PWMTest\PWM3.c
****************************************************************** */ F:\PWMTest\PWM3.c
//设置PWM 操作 F:\PWMTest\PWM3.c
//通过以下步骤将CCP 模块配置为PWM 操作: F:\PWMTest\PWM3.c
//1. 写入PR2 寄存器以设定PWM 周期。 F:\PWMTest\PWM3.c
//2. 写入CCPR1L 寄存器和CCP1CON<5:4> 位以设置PWM 占空比。 F:\PWMTest\PWM3.c
//3. 将TRISC<2> 位清零以将CCP1 引脚设为输出。 F:\PWMTest\PWM3.c
//4. 写入T2CON 以设置TMR2 预分频值并使能Timer2。 F:\PWMTest\PWM3.c
//5. 将CCP1 模块配置为PWM 模式。 F:\PWMTest\PWM3.c
//6. speed为速度,取值范围从0~127 F:\PWMTest\PWM3.c
F:\PWMTest\PWM3.c
void PWMinit(void) F:\PWMTest\PWM3.c
0000d6 0e7f MOVLW 0x7f { PR2=0X7F; //* 设置PWM工作周期=((PR2)+1)*4*Tosc*(TMR2前分频值);Tosc=fosc/4*/ 7F--25K F:\PWMTest\PWM3.c
0000d8 6ecb MOVWF 0xcb,0x0
0000da 6abe CLRF 0xbe,0x0 CCPR1L=0; //* CCP1高电平值高8位为1000 0000=80,占空比0 */ F:\PWMTest\PWM3.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -