社区
C语言
帖子详情
用TC编译对端口操作的程序,编译通过,连接不了,怎么回事啊?
Proteas
2006-06-09 06:46:26
用TC编译对端口操作的程序,编译通过,连接不了,怎么回事啊?
...全文
299
11
打赏
收藏
用TC编译对端口操作的程序,编译通过,连接不了,怎么回事啊?
用TC编译对端口操作的程序,编译通过,连接不了,怎么回事啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Proteas
2006-06-13
打赏
举报
回复
恩,明白了,谢谢楼上。不过不是用tc做工程开发,做实验。
Proteas
2006-06-12
打赏
举报
回复
自己顶,有工程经验的给指点下了。谢谢。
柯本
2006-06-12
打赏
举报
回复
两个问题
1.TC没有inb和outb函数,应该改为inportb和outportb
2.你定义并调用了SetPc0()函数,可没有写出它的实现
----------------------------------------------------
已经有十多年没用TC了,居然还有人用
Proteas
2006-06-12
打赏
举报
回复
继续顶,继续顶
flc
2006-06-12
打赏
举报
回复
关注
Proteas
2006-06-11
打赏
举报
回复
没有,在纯dos,实模式,已经用汇编又写了一遍,但是还不知道问题出在哪里。
bombwang
2006-06-10
打赏
举报
回复
mark
dengjun0256
2006-06-10
打赏
举报
回复
你一定是在windowsXX下运行TC的
Proteas
2006-06-10
打赏
举报
回复
还是不可以,真郁闷了。不知道问题出在什么地方。
beforewind
2006-06-09
打赏
举报
回复
放到main()函数前面试试
不行再 减少main中的循环层数试试
/*函数声明*/
void init_8253(void);
void init_8255(void);
unsigned char Read_8255B(void);
void DeLay(void);
void SetPc0(void);
int TestSwitch(void);
void play(unsigned char low,unsigned char high);
/*定义音符频率表*/
unsigned char Map_Music[8][2]={{17,38},{01,34},{30,30},{02,27},{9,24},{46,21},{12,19},{3,17}};
Proteas
2006-06-09
打赏
举报
回复
程序如下:
/*演奏音乐小程序*/
/*2006,6,9*/
/*---------------------------------------------*/
/*---------------------------------------------*/
#include<stdio.h>
#include<dos.h>
#include<conio.h>
/*定义常用断口地址*/
#define CNT_0 0x40 /*8253计数器0地址*/
#define CTRL_8253 0x43 /*8253控制口地址*/
#define CTRL_8255 0xff2b /*8255控制口地址*/
#define PORT_B 0xff29 /*8255B口地址*/
#define PORT_C 0xff2a /*8255C口地址*/
#define STATE_8253 0x36 /*8253控制字*/
#define STATE_8255 0x82 /*8255控制字*/
#define STATE_8255C 0x36 /*8255C口控制字*/
/*---------------------------------------------*/
/*主程序*/
int main(void)
{
/*函数声明*/
void init_8253(void);
void init_8255(void);
unsigned char Read_8255B(void);
void DeLay(void);
void SetPc0(void);
int TestSwitch(void);
void play(unsigned char low,unsigned char high);
/*定义音符频率表*/
unsigned char Map_Music[8][2]={{17,38},{01,34},{30,30},{02,27},{9,24},{46,21},{12,19},{3,17}};
/*--------------------------*/
/*初始化所用芯片,并写入控制字*/
init_8253();
init_8255();
if(!TestSwitch())/*消除抖动*/
return 1;
else
{
do
{
unsigned char temp=Read_8255B();
switch(temp)/*扫描按键*/
{
case 0 :SetPc0();break;/*置0*/
case 1 :play(Map_Music[0][0],Map_Music[0][1]);break;
case 2 :play(Map_Music[1][0],Map_Music[1][1]);break;
case 3 :play(Map_Music[2][0],Map_Music[2][1]);break;
case 4 :play(Map_Music[3][0],Map_Music[3][1]);break;
case 5 :play(Map_Music[4][0],Map_Music[4][1]);break;
case 6 :play(Map_Music[5][0],Map_Music[5][1]);break;
case 7 :play(Map_Music[6][0],Map_Music[6][1]);break;
case 8 :play(Map_Music[7][0],Map_Music[7][1]);break;
default: /*printf("Input Error!!");*/break;
}
}while('q'==getchar()||'Q'==getchar())/*结束循环*/;
return 0;
}
}
/*-----------------------------------*/
/*延时函数*/
void DeLay(void)
{
int count;
for(count=0;count<100;count++);
}
/*------------------------------------*/
/*初始化8255的函数*/
void init_8255(void)
{
outb(CTRL_8255,STATE_8255);
}
/*------------------------------*/
/*初始化8253的函数*/
void init_8253(void)
{
outb(CTRL_8253,STATE_8253);
}
/*------------------------------*/
/*读8255B口函数*/
unsigned char Read_8255B(void)
{
unsigned char Read;
Read=inb(PORT_B);
return Read;
}
/*-------------------------------*/
/*消除抖动函数*/
int TestSwitch(void)
{
unsigned char pre,now;
pre=Read_8255B();
DeLay();
now=Read_8255B();
if(now==pre)
return 1;
else return 0;
}
/*----------------------*/
/*GATE0置0函数*/
void SerPc0(void)
{
outb(PORT_C,STATE_8255C);
}
/*-----------------------*/
/*演奏函数*/
void play(unsigned char low,unsigned char high)
{
outb(CNT_0,low);
outb(CNT_0,high);
}
虚拟化系列-VMware vSphere 5.1 高可用性
在本节博客中主要讲的是集群的一些功能和配置,相比5.0的设置,没有太大的变化。VMware vSphere为虚拟机提供虚拟化的基础架构,将现有的物理资源转化成虚拟资源,将物理资源分成若干资源,为每个虚拟机提供包括CPU、内存等虚拟资源。要想很好地分配这些资源,就必须要使用资源池。资源池是灵活管理资源的逻辑抽象。资源池可以分组为层次结构,用于对可用的 CPU 和内存资源按层次结构进行...
虚拟化系列-VMware vSphere 5.1 高可用性--学习
在本节博客中主要讲的是集群的一些功能和配置,相比5.0的设置,没有太大的变化。VMware vSphere为虚拟机提供虚拟化的基础架构,将现有的物理资源转化成虚拟资源,将物理资源分成若干资源,为每个虚拟机提供包括CPU、内存等虚拟资源。要想很好地分配这些资源,就必须要使用资源池。资源池是灵活管理资源的逻辑抽象。资源池可以分组为层次结构,用于对可用的 CPU 和内存资源按层次结...
VMware vSphere虚拟化学习之一--Vmware vSphere虚拟化入门
这段时间对VMware的vsphere虚拟化有了兴趣,想把一些淘汰的服务器利用起来组建一个虚拟化集群,VMware的虚拟化产品相比Openstack更加成熟稳定,对于一个单位内部建设虚拟化环境来说,VMware比Openstack的学习成本以及易用程度要高不少,但是这也并不意味着VMware的vsphere非常简单,它也有很多概念需要掌握。 一、VMware vSphere基本情况介绍...
虚拟化概述及VMware VSphere介绍
虚拟化概述及VMware VSphere介绍:虚拟化打破了物理硬件与
操作
系统及在其上运行的应用
程序
之间的硬性
连接
。
操作
系统和应用
程序
在虚拟机中实现虚拟化之后,便不再因位于单台物理计算机中而受到种种束缚。物理元素(如交换机和存储器)的虚拟等效于在可跨越整个企业的虚拟基础架构内运行。与物理机一样,虚拟机是运行
操作
系统和应用
程序
的软件计算机。管理
程序
用作虚拟机的运行平台,并且可以整合计算资源。每个虚拟机...
VMware vSphere 5.1虚拟化技术详解
随着信息技术的发展,虚拟化技术已经成为企业IT架构中不可或缺的一部分。本章将探讨虚拟化技术的优势,并概述如何实施虚拟化环境。分布式资源调度技术在动态分配数据中心资源方面起着关键作用。它通过监控虚拟机的资源使用情况,并根据预设的规则和策略,实现资源的动态分配和优化。vSphere Data Protection (VDP) 是VMware推出的为虚拟化环境设计的备份解决方案。VDP结合了代理和代理软件,能够高效地备份和恢复vSphere环境中的虚拟机。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章