|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
求单片机应用系统中去除工频干扰的程序!谢谢! |
作者:thht4321 栏目:单片机 |
求单片机应用系统中去除工频干扰的程序!谢谢!最好是AVR的!谢谢! wyhtjw@163.com |
2楼: | >>参与讨论 |
作者: zsmbj 于 2006/10/22 21:46:00 发布:
看看这个,对你有帮助: http://lw.mumayi.net/htmldata/84/90/2005_10/article_19226_1.html |
3楼: | >>参与讨论 |
作者: thht4321 于 2006/10/22 22:27:00 发布:
谢谢!已看过了.最好有ATMEGA64的子程序! 单片机去工频(1) 【浩惠电子 http://www.hheet.com/bbs 版权所有】 ;例程: ORG 0000H BEGIN: LJMP MAIN ORG 000BH ;定时器0中断矢量地址 LJMP T0ZDFW ORG 004BH ;~~~~~~~~~~~~~~~~~ ;定时器0中断服务程序 T0ZDFW: ...... ;PUSH(保护现场) MOV TH0, #0ECH ;采样间隔5ms(12M晶振) MOV TL0, #78H JB 1FH, LCGPGR ;――――――――――――- ;建立初始模板 JLCSMB: LCALL SAMPLE1 ;ADC采样,并保存采样值 ;到外部RAM中 LCALL MATCH CJNE R1, #1CH, CONT MOV R1, #10H CONT: DJNZ R2, NEXT DJNZ R3, NEXT SETB 1FH ;初始模板建立完毕 MOV R1, #11H ;11H、12H:存放初始模板值0(低地址存放低字节,高地址存放高字节) ;14H、15H:存放初始模板值1 ;17H、18H:存放初始模板值2 ;1AH、1BH:存放初始模板值3 NEXT: ...... ;POP RETI ;――――――――――――- ;滤除工频干扰 LCGPGR: LCALL SAMPLE2 MOV R0, #30H LCALL LVBO LCALL CHANGE DJNZ R6, NEXT DJNZ R7, NEXT SETB 3FH ;滤波结束 LJMP NEXT ;~~~~~~~~~~~~~~~~~ ;主程序 MAIN: ...... ;程序初始化 LCALL CLEARRAM ;清内存 MOV R1, #10H MOV R2, #00H ;256×4=1024 MOV R3, #04H MOV R4, #00H ;R4,R5用于保存访问外部RAM的地址 MOV R5, #00H MOV R6, #00H ;滤波信号的数据个数为 MOV R7, #00H ;256×256=65536个 SETB EA ;开中断 MOV DPTR, #00H ;外部RAM用DPTR寻址 MOV TMOD, #01H ;设置定时器0模式1 MOV TH0, #0EC H ;为定时器0赋初值 MOV TL0, #78H CLR 1FH ;1FH为建立初始模板和滤波的判别标志 CLR 3FH ;3FH为滤波结束判别标志 SETB ET0 ;开定时器0中断 SETB TR0 ;开定时器0 WAIT: JNB 3FH, $ ...... CLR TR0 ;关定时器0 ...... ;~~~~~~~~~~~~~~~~~ ;子程功能:采样并保存 SAMPLE1: ...... ;启动A/D采样,采样值的低字节 ;存放在ADCDATAL单元,采样 ;值的高字节存放在ADCDATAH单元 MOV A, ADCDATAL ;读取A/D采样低字节 MOVX @DPTR, A ;存入外部RAM INC DPTR MOV A, ADCDATAH ;读取A/D采样高字节 MOVX @DPTR, A ;存入外部RAM INC DPTR RET ;―――――――――――――― ;子程功能:采样 SAMPLE2: …… ;启动A/D采样,采样值的低字节 ;存放在ADCDATAL单元,采样 ;值的高字节存放在ADCDATAH单元 RET ;―――――――――――――― ;子程功能:累加 MATCH: MOV A, ADCDATAL ;读取A/D采样低字节 ADD A, @R1 MOV @R1, A INC R1 MOV A, ADCDATAH ;读取A/D采样高字节 ADDC A, @R1 MOV @R1, A INC R1 MOV A, #00H ADDC A, @R1 MOV @R1, A INC R1 RET ;―――――――――――――― ;子程功能:对信号进行滤波(三字节减法),并将结果保存到外部RAM LVB CLR C MOV A, ADCDATAL ;读取A/D采样低字节 SUBB A, @R1 MOV @R0, A INC R0 INC R1 MOV A, ADCDATAH ;读取A/D采样高字节 SUBB A, @R1 MOV @R0, A INC R0 DEC R1 MOV A, #01H ;读取A/D采样高字节 SUBB A, #00H MOV @R0, A DEC R0 DEC R0 DEC R1 ;将滤波结果保存到外部RAM MOV @R0, A MOVX @DPTR, A INC R0 INC DPTR MOV @R0, A MOVX @DPTR, A INC R0 INC DPTR MOV @R0, A MOVX @DPTR, A INC DPTR RET |
4楼: | >>参与讨论 |
作者: thht4321 于 2006/10/23 9:13:00 发布:
求去除工频的atmega64C语言子程序! |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |