社区
C语言
帖子详情
用TC编译对端口操作的程序,编译通过,连接不了,怎么回事啊?
Proteas
2006-06-09 06:46:26
用TC编译对端口操作的程序,编译通过,连接不了,怎么回事啊?
...全文
276
11
打赏
收藏
用TC编译对端口操作的程序,编译通过,连接不了,怎么回事啊?
用TC编译对端口操作的程序,编译通过,连接不了,怎么回事啊?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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);
}
TC
.rar_
TC
教你怎么样用
TC
实现硬件的编程,对于初学C语言的大二学生有帮助。
用
TC
实现串口通信 有实例
outputb和inportb对应的函数为_inp和_outp。使用时需要
头文件。 建议使用_inp和_outp,而不是使用inp和outp。因为_inp和_outp在Debug和Release都可以使用, 而inp和outp只能用于Release设置。如果在Debug设置时使用inp和outp,
编译
时不会错
TC
操作
笔记本 8259 5254源代码 带执行档
定时器源码 利用8259和8254中断
编译
环境
TC
可执行
基于英飞凌
TC
297实现的安全管理单元(SMU)代码
基于英飞凌
TC
297实现的安全管理单元(SMU)代码,当触发警告时实现
端口
紧急停止
Qt步进电机上位机控制
程序
源代码Qt跨平台C C++语言编写 支持串口
Tc
p网口Udp网络三种
端口
类型 提供,提供详细注释和人工
Qt步进电机上位机控制
程序
源代码Qt跨平台C C++语言编写 支持串口
Tc
p网口Udp网络三种
端口
类型 提供,提供详细注释和人工讲解 1.功能介绍: 可控制步进电机的上位机
程序
源代码,基于Qt库,采用C C++语言编写。 支持串口、
Tc
p网口、Udp网络三种
端口
类型,带有调试显示窗口,接收数据可实时显示。 带有配置自动保存功能,用户的配置数据会自动存储,带有超时提醒功能,如果不回复则弹框提示。 其中三个
端口
,采用了类的继承与派生方式编写,对外统一接口,实现多态功能,具备较强的移植性。 2.环境说明: 开发环境是Qt5.10.1,使用Qt自带的QSerialPort,使用网络的Socket编程。 源代码中包含详细注释,使用说明,设计文档等。 请将源码放到纯英文路径下再
编译
。 3.使用介绍: 可直接运行在可执行
程序
里的exe文件,
操作
并了解软件运行流程。 本代码产品特点: 1、尽量贴合实际应用,细节考虑周到。 2、注释完善,讲解详细,还有相关扩展知识点介绍。 3、提供代码设计文档,使用文档,环境配置文档等。 4.子功能模块介绍: 步进电机的地址设置、速度设置、正转反转等控制功能; 网络
Tc
C语言
70,024
社区成员
243,253
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章