为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 采样保持器实验

采样保持器实验

2017-10-19 8页 doc 21KB 96阅读

用户头像

is_954223

暂无简介

举报
采样保持器实验采样保持器实验 /*------------------------------------------------------------- ** ** 版权:上海航虹高科技有限公司,2004年 ** ** 文件名: CP3_2.c ** ** 描述: 采样/保持器实验 ** ** ** 定义的函数: ** ** ** ** 设计注记: 改变采样周期,观察对系统稳定性的影响 ** ** ** ** 其它注记: ** ** ** ** ** 更改历史: ** ** 版本: 2.0 ...
采样保持器实验
采样保持器实验 /*------------------------------------------------------------- ** ** 版权:上海航虹高科技有限公司,2004年 ** ** 文件名: CP3_2.c ** ** 描述: 采样/保持器实验 ** ** ** 定义的: ** ** ** ** 注记: 改变采样周期,观察对系统稳定性的影响 ** ** ** ** 其它注记: ** ** ** ** ** 更改历史: ** ** 版本: 2.0 ** 时间: 2005/10 ** 作者: 曾亚 ** 纪录: ** ** **------------------------------------------------------------- */ #define UINT unsigned int #define BYTE unsigned char #define CS0832 0x00 #define CS8259E 0x20 #define CS8259O 0x21 #define CS8253T0 0x40 #define CS8253T1 0x41 #define CS8253T2 0x42 #define CS8253C 0x43 #define CS273 0x60 #define CSAD_1_0 0x80 #define CSAD_1_1 0x81 #define CSAD_2_0 0xA0 #define CSAD_2_1 0xA1 #define CSAD_2_2 0xA2 #define CSAD_2_3 0xA3 #define CSAD_2_4 0xA4 #define CSAD_2_5 0xA5 #define CSAD_2_6 0xA6 #define CSAD_2_7 0xA7 #define CS0809_0 0X80 #define CS0809_1 0X81 #define DSADDR 0x0030 //数据暂存段地址 #define COMMBYTE 0x0CF0 //串行口暂存偏移地址 #define REVBYTE 0x0C00 //用于上下交换数据区的偏移地址 #define ADSELECT 0x0C20 //AD端口选择暂存偏移地址 #define REVEN 0x20 //接受允许标记 #define dsvalue 0x0123 #include void delay1 (int t); /****************************************************************/ void interrupt irq0(void); void interrupt irq6(void); void SendByte(BYTE byte); void interrupt irq7(); unsigned int count,Flag,Td; unsigned int d,a; BYTE AD1,AD2; int main(void) { _DS=dsvalue; _ES=dsvalue; //设定初始参数, 采样周期=Td*5ms Td=2; Flag=2; //1800=5ms 0e66=3ms 0733=1.5ms 1ccc=6ms //初始化8253 outportb(0x43,0x36); outportb(0x40,0x00); outportb(0x40,0x18); //初始化8259 outportb(0x20,0x13); delay1 (0x3000); outportb(0x21,0x08); delay1 (0x3000); outportb(0x21,0x09); delay1 (0x3000); outportb(0x21,0xbe); delay1 (0x3000); outportb(0x20,0x20); delay1 (0x3000); //嵌入汇编,设置中断入口地址 _asm { push ax push ds push si xor ax,ax mov ds,ax mov ax,offset irq0 mov si,0020h mov [si],ax mov si,0022h mov ax,cs mov [si],ax mov ax,offset irq6 mov si,0038h mov [si],ax mov ax,cs mov si,003ah mov [si],ax mov ax,offset irq7 mov si,3ch mov [si],ax mov si,3eh mov ax,cs mov [si],ax pop si pop ds pop ax } outportb(CS0832,0x80); _asm STI enable(); while(1); } //延时函数,dilay1(1)大概等于10微秒 void delay1 (int t) { int j ; for (j=0;j=Td&&Flag==0) { outportb (CSAD_2_7,0x78); delay1 (15); a=inportb (CSAD_2_7); outportb(CS0832,a); delay1 (2); count=0; } outportb(CS0809_0,0X78); delay1 (10); AD1=inportb(CS0809_0); outportb(CS0809_1,0X80); delay1 (10); AD2=inportb (CS0809_1); SendByte(AD1); SendByte(AD2); outportb(0x20,0x20); } //中断6服务程序,外部中断,采样开始标记 void interrupt irq6 (void) { _DS=dsvalue; _ES=dsvalue; Flag=1; outportb (0x20,0x20); } //防止误触发进入 void interrupt irq7() { outportb(0x20,0x20); } //发送一个字节byte void SendByte(BYTE byte) { pokeb(DSADDR,COMMBYTE,byte); _asm{ PUSH AX PUSH ES MOV AX,0030H MOV ES,AX MOV AL,ES:[3312] INT 1EH POP ES POP AX } }
/
本文档为【采样保持器实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索